3

我使用 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()总是string(1) "1"在 webkit 浏览器中返回。

注意:我尝试不在本地主机上运行它,但问题仍然存在。另请注意,我使用完全相同的方式来读取其他 cookie(例如,对于选中的复选框)并且它们返回正确的值。

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

4

1 回答 1

2

当我遇到这个问题时,似乎在某些情况下,实际上有两个同名的 cookie。其中一个是 php 创建的 cookie,另一个是 javascript 创建的 cookie。在其他情况下,只有一个 cookie,但 php 不会正确输出更新的值,直到发生完整的页面重新加载。

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

不幸的是,我不得不坚持的解决方案是完全使用 JS 或 PHP 处理特定的 cookie 并坚持使用它,这是我可以让它永远不会有和读取/值更新/重复问题的唯一方法

于 2012-04-25T19:54:11.793 回答