目前,我已经设置了一个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 });
});
试试这个从林克复制的