javascript – 如果Chrome开放工具打开,AJAX可以正常工作,但如果Chrome网络工具关闭则不行

前端之家收集整理的这篇文章主要介绍了javascript – 如果Chrome开放工具打开,AJAX可以正常工作,但如果Chrome网络工具关闭则不行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在通过ajax加载一个json文件.如果Chrome开发工具处于打开状态,则一切运行正常.如果Chrome开发工具已关闭,则会失败.值得庆幸的是,开发工具即使在关闭时仍然会继续这样做,所以我仍然可以看到我得到的异常:
Failed to load resource: the server responded with a status of 412 (Precondition Failed) http://localhost/experiments/escape/maps/test.json

为什么开发工具是否开放存在先决条件?此外,打开和关闭开发工具似乎不太可能以任何方式影响服务器的行为,所以我认为Chrome是阻止请求而不是异常中建议的服务器.

遗憾的是,开发工具在关闭时无法跟踪网络活动,因此我无法使用网络选项卡获取任何进一步的信息.

使用以下代码通过JQuery处理AJAX:

map.load = function(mapName,tileSource,tileWidth,tileHeight,onLoad) {
    $.ajax({
        url: '../escape/maps/'+mapName+'.json',type: 'post',success: function(mapData) {
            // there's loads of stuff in here but I don't think it's relevant to the question as the failure prevents the success method from being called.
        }
    });
};

代码在Firefox中没有任何问题,因此似乎特意与Chrome开发工具连接.任何建议都欢迎,因为我完全陷入困境!

编辑:好的,所以它根本不是开发工具的错误 – 我已经在开发工具中禁用了缓存,重新启用它允许脚本正常工作.为什么我的代码依赖于缓存?在Firefox中禁用/启用缓存不会导致任何问题

编辑2:好的,我想我已经接近了.失败的前提条件是if-modified-since条件(文件未更改).我假设chrome正在发送此信息以确认是否使用缓存版本,但是,尽管前提条件失败,但它不会加载缓存版本.我认为这可能意味着缓存在某种程度上被破坏,所以我清除了缓存.不幸的是,这并没有解决问题.该文件将很乐意加载一次,但下次我回到我开始时遇到同样的问题.有任何想法吗?

解决方法

@Rondel – 你懂了!问题是我愚蠢地使用’post’来获取静态文件.邮件请求永远不应该被缓存,这就是Chrome无法检索它的原因.我仍然不知道为什么chrome仍然发送if-modified-since标头,但无论如何更改请求类型以获取是问题的解决方案(抱歉Crome Dev工具不公平地责怪你 – 问题,像往常一样,是我的代码!)

猜你在找的Ajax相关文章