gpt4 book ai didi

javascript - 如何在不使用 ajax 且不重新加载页面的情况下使用 PHP 访问由 History.PushState 创建的查询字符串变量

转载 作者:行者123 更新时间:2023-11-30 12:23:31 25 4
gpt4 key购买 nike

由于 HTML5 对 Javascript 的历史 API 的扩展,Javascript 开发人员现在可以更好地控制浏览器的历史记录,甚至可以更改给定页面的状态并向用户提供可添加书签的地址,而无需重新加载页面。

然而,在 PHP(或服务器端)方面,情况有些不同。以下面的 URL 为例:

http://somesite.com/?user=8796&fname=john&lname=doe

当用户第一次使用 PHP 导航到此页面时,PHP 开发人员可以使用 GET super 全局访问服务器端 URL 中传递的信息,例如:

$user_id = $_GET['user'];
$user_firstname = $_GET['fname'];
$user_lastname = $_GET['lname'];

现在,在单击按钮或任何其他用户启动的事件时,Javascript 代码开始使用 History.PushState 方法并更改查询字符串参数,这样我们现在就有了这样的 URL

http://somesite.com/?user=7647&fname=jane&lname=doe

对于 Javascript 开发人员,他们可以通过解析 URL 并通过 AJAX 相应地更新页面内容来检索查询字符串参数。然而,对于 PHP 而言并非如此。必须重新加载页面,PHP 脚本才能访问刚刚更新的查询字符串参数。

有没有办法,即使远程或理论上,PHP 也可以访问使用 Javascript 的 History.PushState 方法创建的 URL/查询字符串,而无需重新加载页面,也无需 AJAX 中介?

最佳答案

History.pushState() JavaScript API 在浏览器中运行。 PHP 在服务器上运行。因此,如果 JavaScript 以某种方式通过网络让 PHP 知道,PHP 就无法知道新的 URL 和查询字符串。发生这种情况的最明显方式是用户重新加载页面或网页向服务器发送 XHR/AJAX 请求。

@Pointy 提到 WebSockets , 并且可能还有其他方法可以将信息发送到服务器,但是如果不知道为什么要避免 AJAX(这似乎非常适合此任务),就不可能说其他方法是否可以满足您的需求。

关于javascript - 如何在不使用 ajax 且不重新加载页面的情况下使用 PHP 访问由 History.PushState 创建的查询字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com