jQuery:$ .cookie与PHP $ _COOKIE的价值不同? (只有webkit浏览器)

时间:2012-04-25 19:48:42

标签: php jquery cookies

我使用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(例如,对于选中的复选框),它们会返回正确的值。

任何想法或提示都非常感谢!非常感谢你提前!! :)

1 个答案:

答案 0 :(得分:2)

当我遇到这个问题时,似乎在几个实例中,实际上有两个同名的cookie。其中一个是php创建的cookie,另一个是javascript创建的cookie。在其他情况下,有一个cookie,但在完成整页重新加载之前,php无法正确输出更新的值。

加载一个导致cookie所需的“新”值的新页面是有问题的。因此,处理php的延迟cookie更新效果的一种方法是使用可用的cookie方法,也只是设置$_COOKIE['yourCookieName'] = $val

不幸的是,我必须坚持使用的解决方案是完全使用JS或PHP来处理特定的cookie并坚持使用它,这是我能够永远拥有它并且读取/值更新/复制的唯一方法问题