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