【问题标题】:JQuery creates new session on GETJQuery 在 GET 上创建新会话
【发布时间】:2014-04-22 20:29:36
【问题描述】:

我正在使用 JSF 2.2、Primefaces 4 和 jQuery 2.1 设计一个 Web 应用程序,其中 jQuery 负责 ajax 内容加载和无限滚动。

我遇到并且似乎无法解决的问题是,当我使用 jQuery 的 ajax 命令加载无尽滚动的内容时。这会创建新会话而不是使用已经存在的会话,并且显然是不可接受的,因为这会使 JSF 丢失存储的数据。 剩下的代码使用 .load() 函数进行其他操作,就像一个魅力。

您能帮我理解为什么会发生这种情况吗?


这是用于加载和附加新内容的代码部分:

$.ajax({
  url: link,
  type: "GET",
  success: function(html) {
    if(html) {
      var result = $('<div />').append(html).find('#center_content_data').html();
      $("#center_content_data").append(result);
      $('#center_content_data_loading').hide();
    }
  }
});

编辑:我也尝试使用 .post() 和 .get() 加载内容,但得到了相同的结果。

$.post(link, function(data){ 
  $(data).find("#center_content_data").appendTo("#center_content_data");
});

【问题讨论】:

  • jQuery 不会以任何方式或形式创建、读取或使用会话?
  • 不,它所做的只是通过替换或附加新内容来为网站加载其他内容。无限滚动是代码中唯一明显导致创建新会话的部分,特别是上面显示的部分。
  • 经过几天的尝试解决这个问题,当我终于发布了一个关于它的问题时,我也遇到了一些让我找到答案的东西。只要 stackoverflow 允许我,我将发布导致它的原因作为答案,对于任何有类似问题的人。

标签: jquery ajax jsf session primefaces


【解决方案1】:

经过几天的尝试解决这个问题,当我终于发布了一个关于它的问题时,我也遇到了一些让我找到答案的东西。

问题是由 ajax 加载的链接格式不正确(例如 my.domain//app 而不是 my.domain/app)引起的,因为该链接是由应用程序先前状态生成的。浏览器能够找到该页面,但由于它与发起请求的域不同,因此请求正在为其创建一个新会话。

对于遇到类似问题的任何人,请尝试检查以下答案:

【讨论】:

    猜你喜欢
    • 2010-12-25
    • 2020-07-13
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2012-11-30
    • 2018-03-05
    相关资源
    最近更新 更多