我有一个AJAX请求,如下所示:
$.get('api/indicator/status_graph/'+self.indicator.get('id'), function(data) {
self.actuals_graph(data);
self.graphLoaded(true);
self.graphError(false);
}).error(function(data) {
self.graphError(true);
});
这是一个诚实的简单请求,并且在页面上的另一个地方重复一个。我得到的问题是在调用get函数时立即调用成功回调; Chrome的“网络”面板显示根本没有向服务器发出请求。一个几乎完全相同的代码片段在其他地方正常工作,并且因为它们被调用的方式或时间没有区别,所以我老老实实地无法弄清楚发生了什么。
答案 0 :(得分:1)
请求/响应很可能已缓存。查看调试器以进行验证。
答案 1 :(得分:1)
我最近遇到了同样的问题:成功回调被触发,响应数据是一个空字符串,开发人员工具中没有任何请求会出现,也没有请求会到达网络服务器。和你一样,我认为这不是一个缓存问题,因为没有任何证据表明请求(甚至是缓存的)都出现在任何地方。
但是,我尝试将cache
调用的ajax()
参数设置为false
,并在原始服务器回复中设置所有类型的无缓存标头(在Django中,使用@never_cache装饰者),问题似乎得到解决。两天后,这个问题再也没有重现过了。
答案 2 :(得分:0)
你可以运行类似于Fiddler的东西来查看你的请求是否确实被发送了吗?另外,你说成功回调是在调用GET后立即触发的 - 返回成功回调的数据是否合适?
一种可能性是chrome正在预先缓存您的请求。你确实提到过另一段代码几乎完全相同 - 它实际上是相同的吗?还是关闭?