【发布时间】:2010-10-07 11:11:04
【问题描述】:
我需要使用 javascript 从当前窗口 url 中获取哈希 # 值(使用 PHP 无法获取),然后使用它来使用 CI 的 set_value() 函数设置表单输入的值属性。
任何想法我可以如何在 javascript 中获取值然后将其放入 PHP 函数中? :-S
提前致谢!
【问题讨论】:
标签: php javascript codeigniter
我需要使用 javascript 从当前窗口 url 中获取哈希 # 值(使用 PHP 无法获取),然后使用它来使用 CI 的 set_value() 函数设置表单输入的值属性。
任何想法我可以如何在 javascript 中获取值然后将其放入 PHP 函数中? :-S
提前致谢!
【问题讨论】:
标签: php javascript codeigniter
我不能完全确定您是否完全了解 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() 访问它
【讨论】: