我需要从javascript中获取当前窗口url的哈希值(无法用PHP获取),然后使用它来设置CI的set_value()函数的表单输入的值attibute。Code Igniter - 通过window.location.hash获取哈希值并在set_value()中使用?
任何想法如何我可以在JavaScript中获取价值,然后将其放入PHP函数? :-S
在此先感谢!
我需要从javascript中获取当前窗口url的哈希值(无法用PHP获取),然后使用它来设置CI的set_value()函数的表单输入的值attibute。Code Igniter - 通过window.location.hash获取哈希值并在set_value()中使用?
任何想法如何我可以在JavaScript中获取价值,然后将其放入PHP函数? :-S
在此先感谢!
我不能完全告诉你,如果完全理解JavaScript和PHP之间的关系进行存取,因此我会假设你没有。 PHP在服务器上运行并将HTML输出到浏览器(以及一些标题和其他内容)。一旦将HTML发送到浏览器,用户在您的网站上执行的另一个GET或POST请求(或打开持久性Web套接字连接)之前,您的网站无法控制。正如你所提到的那样,PHP不可能直接读取散列值,因为它仅限于浏览器,只能通过Javascript访问。由于针对该特定请求的PHP脚本已停止运行并且页面数据已输出到浏览器,因此使用Javascript获取该值的意义何在,将其通过另一个http请求发送回PHP,请使用set_value()功能,然后呢?
如果您使用window.location.hash并将输入框的值设置为等于它,您可以在用户提交表单时使用set_value()。看看CI的set_value()辅助函数:
function set_value($field = '', $default = '')
{
if (FALSE === ($OBJ =& _get_validation_object()))
{
if (! isset($_POST[$field]))
{
return $default;
}
return form_prep($_POST[$field], $field);
}
return form_prep($OBJ->set_value($field, $default), $field);
}
它首先检查您是否设置了表单验证对象。如果你有,它使用该对象的set_value运行form_prep()函数(大概是为了管理你在表单验证中设置的任何规则,如果没有,它会看到该字段是否存在于$ _POST数组中。它不会,它会返回默认值,如果是,它会返回$ _POST数组的值,所以如果你a)为它设置一个表单验证规则,并且b)给这个输入框指定你想要的名字在你的set_value()函数中使用,你将能够检索你使用Javascript输入到输入框中的PHP哈希值。
在Javascript中,你可以做到这一点可见 hash = window.location.hash;
在PHP中您可以使用parse_url()
parse_url() : Return Values On seriously malformed URLs, parse_url() may return FALSE. Otherwise an associative array is returned, whose components may be (at least one): * scheme - e.g. http * host * port * user * pass * path * query - after the question mark ? * fragment - after the hashmark #
再次感谢您的全面回答treeface,非常感谢。抱歉,迟到的回应......切线。 – Robimp 2010-10-27 17:21:03