首页 文章

如果chrome dev工具打开,AJAX可以工作,但是如果chrome web工具关闭则不行吗?

提问于
浏览
5

我正在通过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正在发送此信息以确认是否使用缓存版本,但是,尽管前提条件失败,但它不会加载缓存版本 . 我认为这可能意味着缓存在某种程度上被破坏,所以我清除了缓存 . 不幸的是,这并没有解决问题 . 该文件将很乐意加载一次,但下次我回到我开始时遇到同样的问题 . 有任何想法吗?

1 回答

  • 3

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

相关问题