我需要使用 javascript 从当前窗口 url 获取哈希 # 值(无法使用 PHP 获取),然后使用它通过 CI 的 set_value() 函数设置表单输入的值属性。
有什么想法可以获取 javascript 中的值然后将其放入 PHP 函数中吗? :-S
提前致谢!
最佳答案
我不太清楚您是否完全理解 Javascript 和 PHP 之间的关系,所以我假设您没有。 PHP 在服务器上运行并将 HTML 输出到浏览器(以及一些 header 和其他内容)。一旦 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 中的哈希值。
关于php - Code Igniter - 使用 window.location.hash 获取哈希值并在 set_value() 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3881037/