我使用 jQuery 来更新和加载搜索结果以及页面底部的页面导航。我有一个jQuery滑块和几个带有复选框的HTML表单,对于每个元素,我都设置了一个cookie(更改时),并使用.load()
从load_search.php
加载内容,这在所有浏览器中都运行良好。
现在我使用相同的方法上传页面导航,我得到了非常奇怪的结果。在搜索.php中,jQuery代码为:
// PAGE NAVIGATION //
$('#page_navigation').on("click", ".page_no_item" , function(event) {
var id = (event.target.id);
$.cookie("cur_page_no", id);
search_results_load();
page_navigation_load();
alert($.cookie("cur_page_no")); // -> returns the right cookie value
});
另外,我检查文档准备好的值,以确保:
$(document).ready(function() {
alert($.cookie("cur_page_no")); // -> also returns the right cookie value
});
在我加载的.php
文件中,在 no-webkit 浏览器中,$_COOKIE['cur_page_no']
返回正确的值,只是在 webkit 浏览器中,它总是返回 1(如果 Cookie 为空或未设置,我将其作为标准)。 var_dump()
返回始终string(1) "1"
在 webkit 浏览器中。
注意:我尝试不在本地主机上运行它,但问题仍然存在。另请注意,我使用完全相同的方式来读取其他cookie(例如,用于选中的复选框),并且它们返回正确的值。
任何想法或提示都非常感谢!提前非常感谢!!:)
当我遇到这个问题时,似乎在几个情况下,实际上有两个同名的饼干。其中一个是php创建的cookie,另一个是javascript创建的cookie。在其他情况下,有一个cookie,但php不会正确输出更新的值,直到发生整页重新加载。
加载新页面导致读取 cookie 所需的"新"值是有问题的。因此,处理 php 的后期 cookie 更新效果的一种方法是既使用可用的 cookie 方法,也只设置$_COOKIE['yourCookieName'] = $val
。
不幸的是,我必须坚持的解决方案是完全使用 JS 或 PHP 处理特定的 cookie 并坚持使用它,这是我可以让它永远不会有和读取/值更新/重复问题的唯一方法