【问题标题】:jQuery ajax cache disabling not working?jQuery ajax 缓存禁用不起作用?
【发布时间】:2011-05-20 08:44:18
【问题描述】:

我正在开发一个使用 ajax 请求来检索信息的 Firefox 扩展。这是代码:

$.ajax({
        url: "http://127.0.0.1/foo/bar/Service?wsdl" + new Date().getTime(),
        beforeSend: function(request) { request.setRequestHeader("SOAPAction", "Group"); },         
        async: false,
        cache: false,
        type: "POST",   
        dataType: "xml",
        data: req,
        contentType: "text/xml; charset=\"utf-8\"",
        success: function (data, textStatus, xmlHttpRequest) {
        out = $(xmlHttpRequest.responseXML);
        }
    }); 

当发送到服务器的数据发生更改时,我仍然得到相同的结果。我试图通过在 URL 中添加“new Date().getTime()”和“cache: false”来避免这种情况。这似乎不起作用。重启浏览器后,我得到了正确的结果。

有人知道问题出在哪里吗? 是否存在某种会话处理,因此服务器仍会返回旧响应?

编辑:我做了很多测试和调试,我想我发现了问题:每个 ajax-request 都保存了一个包含 session-id 的 cookie,所以每次我再次发出请求时,服务器都会发送cookie 中带有 session-id 的会话数据。非常糟糕的行为,我不知道可以通过 ajax 请求创建 cookie。 所以我要解决这个问题所要做的就是一个函数,每次我的参数改变时都会删​​除这个cookie。再次感谢您的帮助。

【问题讨论】:

  • 您尝试过这些建议吗??
  • 是的,我现在尝试了这两个建议(由 Molle 博士和 gov 提出),但行为仍然相同。
  • 是吗,你在服务器端做缓存吗???
  • 我对服务器端所做的事情没有任何影响,但我已经用 SOAP 客户端检查过,回复是正确的。

标签: jquery ajax firefox caching


【解决方案1】:

你可以试试这个

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

尝试与 Math.random() 一起更安全

Date().getTime() 和 Math.random()

http://127.0.0.1/foo/bar/Service?wsdl" + new Date().getTime() + Math.random()

【讨论】:

    【解决方案2】:

    在时间戳之前尝试一个&符号:

    http://127.0.0.1/foo/bar/Service?wsdl&" + new Date().getTime()
    

    我猜 wsdl 参数在 url 中是有意义的,没有 & 符号你会破坏参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 2019-03-08
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多