jQuery ajax缓存禁用无法正常工作?

时间:2010-12-04 22:36:06

标签: jquery ajax firefox caching

我正在开发一个使用ajax-request检索信息的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”来避免这种情况。这似乎不起作用。重新启动浏览器后,我得到了正确的结果。

有谁知道问题是什么? 是否有某种会话处理,所以服务器仍然会回复旧响应?

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

2 个答案:

答案 0 :(得分:8)

你能试试吗

$(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()

答案 1 :(得分:1)

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

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

我想wsdl-parameter在url中有意义,没有&符号你会破坏参数。