我使用jQuery来更新和加载页面底部的搜索结果和页面导航。我有一个jQuery滑块和几个带复选框的HTML表单,我为每个元素设置了一个cookie(在更改时),并使用.load()
加载来自load_search.php
的内容,这非常适用于所有浏览器。
现在我使用相同的方法上传页面导航,我得到了非常奇怪的结果。在search.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
文件中,在非webkit浏览器中,$_COOKIE['cur_page_no']
返回正确的值,只是在webkit浏览器中,它总是返回1(我把它作为标准,如果Cookie是空的还是没有设置)。 var_dump()
在webkit浏览器中始终返回string(1) "1"
。
注意:我试图在localhost上运行它,但问题仍然存在。另请注意,我使用完全相同的方式来读取其他cookie(例如,对于选中的复选框),它们会返回正确的值。
任何想法或提示都非常感谢!非常感谢你提前!! :)
答案 0 :(得分:2)
当我遇到这个问题时,似乎在几个实例中,实际上有两个同名的cookie。其中一个是php创建的cookie,另一个是javascript创建的cookie。在其他情况下,有一个cookie,但在完成整页重新加载之前,php无法正确输出更新的值。
加载一个导致cookie所需的“新”值的新页面是有问题的。因此,处理php的延迟cookie更新效果的一种方法是使用可用的cookie方法,也只是设置$_COOKIE['yourCookieName'] = $val
。
不幸的是,我必须坚持使用的解决方案是完全使用JS或PHP来处理特定的cookie并坚持使用它,这是我能够永远拥有它并且读取/值更新/复制的唯一方法问题