【问题标题】:Code Igniter - Get Hash Value With window.location.hash and Use in set_value()?Code Igniter - 使用 window.location.hash 获取哈希值并在 set_value() 中使用?
【发布时间】:2010-10-07 11:11:04
【问题描述】:

我需要使用 javascript 从当前窗口 url 中获取哈希 # 值(使用 PHP 无法获取),然后使用它来使用 CI 的 set_value() 函数设置表单输入的值属性。

任何想法我可以如何在 javascript 中获取值然后将其放入 PHP 函数中? :-S

提前致谢!

【问题讨论】:

    标签: php javascript codeigniter


    【解决方案1】:

    我不能完全确定您是否完全了解 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 中的哈希值。

    【讨论】:

    • 再次感谢树脸的全面回答,非常感谢。抱歉回复晚了...切线。
    【解决方案2】:

    在 Javascript 中你可以实现这个可视化 hash = window.location.hash;

    在 PHP 中,您可以使用 parse_url() 访问它

    parse_url() : 返回值 在严重格式错误的 URL 上,parse_url() 可能返回 FALSE。否则返回一个关联数组,其组件可能是(至少一个): * 方案 - 例如http * 主持人 * 港口 * 用户 * 经过 * 小路 * 查询 - 在问号之后? * 片段 - 在井号之后 #

    【讨论】:

    • 嗨,阿西夫,感谢您的回复。如何使用 window.location.hash 获取哈希并将其放入同一页面上的 php 函数中?
    • 在同一页面上,如果您想为表单元素分配任何值,则直接使用 JS 例如使用 oForm.elements["text_element_name"].value = hash 读取哈希值分配后设置输入值
    • 如何在 PHP 函数中使用它,例如 set_value()? - 参考我上面的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2013-03-02
    • 2019-07-04
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多