jQuery Ajax只执行一次,但似乎每次都应该调用


jQuery Ajax only executing once, but appears to call every time it should

目前,我已经设置了一个ajax调用,在更改特定字段时,它应该执行一个php脚本。脚本首先在页面加载时执行。

阿贾克斯呼叫

$j.ajax({url: prod_json_url, dataType: 'json', cache: true,
  beforeSend: function( xhr ) {
    xhr.overrideMimeType( 'text/plain; charset=x-user-defined' );
  },
  success: function(data) { 
    //things to do on success with JSON
  }
});

在我的虚拟环境中进行测试时,一切正常,但是当我将其部署到其他服务器时,会发生以下情况。

1(在页面加载时,我可以查看FireBug中正在执行的URL并返回正确的JSON响应。日志记录显示它确实转到要执行的脚本并返回正确的数据。 一切都按其应有之进行。

2(然后我单击以更新字段。 通过在控制台中再次查看 Firebug,将执行正确的 URL,但是,JSON 响应不正确。 它保持页面加载时发生的相同。 当我添加日志记录时,它似乎从未真正到达更新的 URL。(这与具有更新参数的页面加载相同(。

3(如果我等待一段时间,然后重试,它有时会再次表现为应有的行为,但仅适用于一次执行。

这种行为让我相信这是一个缓存问题。 有没有人知道我如何解决这个问题或我应该寻找或检查什么变量? 数据库完全相同,我不确定还有什么可能导致这种情况。任何帮助将不胜感激!如果更多信息也有帮助,请告诉我。

尝试将当前时间添加到您正在加载数据的 url 中:

prod_json_url + '?ts=' + $.now()'

缓存控制HTML标头显然在IE中的Ajax请求中被忽略,因此cache:false是不够的。不过,这应该有效。

$.now()是通往new Date().getTime()的快捷方式;

将缓存设置为 false。似乎有客户端缓存

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

试试这个从林克复制的