【问题标题】:Weird $_SESSION behaviour in PHP [duplicate]PHP中奇怪的$_SESSION行为[重复]
【发布时间】:2012-09-29 23:07:03
【问题描述】:

可能重复:
How to make php scripts run in parallel?

我目前遇到了一个(在我看来)PHP 中 $_SESSION superglobal 的奇怪问题。

在页面卸载 ($(window).unload) jQuery 向save.php 发送一个同步发布请求。

它包含一些应该保存在$_SESSION["data"] 中的数据。当仍然显示当前页面时,我可以获取jqXHR 对象并使用alert() 显示包含在responseText 中的一些测试字符串。但在下一页上,这些数据尚不可用。我只需要重新加载,一切都很好。

在我看来,我的浏览器(Firefox/Chrome)在发布请求尚未完成时在后台加载下一页。还是$_SESSION有问题?

【问题讨论】:

  • 可以发一下代码吗?
  • 请记住,如今的浏览器正在预取网站。 用户考虑离开当前页面之前,下一页可能已经加载。
  • 我认为这就是重点。有什么办法可以避免这种情况吗?

标签: php javascript jquery


【解决方案1】:

可能将事件附加到window.unload 不是一个好主意。浏览器可能会先获取下一页然后调用事件,在这种情况下,您的看到没有改变(还)。因此,您可以附加到导致导航的事件,而不是附加到卸载事件

例如:

  • 附加到链接单击,取消默认行为,调用您的 ajax save.php 脚本,然后使用window.location.href 手动进行导航
  • 附加到表单帖子、取消帖子、调用 ajax 然后发布表单......

希望有所帮助

【讨论】:

    猜你喜欢
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多