我正在通過ajax加載json文件。如果Chrome開發工具是開放的,那麼所有功能都可以完美實現如果Chrome開發工具關閉,則失敗。值得慶幸的是開發工具仍然保持做它的事情,即使在關閉時,所以我仍然可以看到異常,我得到:如果chrome開發工具打開AJAX,但是如果chrome web工具關閉,AJAX將無法工作?
Failed to load resource: the server responded with a status of 412 (Precondition Failed) http://localhost/experiments/escape/maps/test.json
爲什麼會有關於開發工具是否是開放的前提條件?另外,打開和關閉開發工具似乎不太可能以任何方式影響服務器的行爲,所以我認爲這是Chrome阻止請求而不是異常中建議的服務器。
不幸的是,開發工具在關閉時不會跟蹤網絡活動,所以我無法使用網絡選項卡獲取更多信息。
的AJAX是通過JQuery用下面的代碼來處理:
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瀏覽器開發工具。任何建議歡迎,因爲我完全flummoxed!
編輯:好,所以它不是開發工具的錯誤 - 我已經禁用開發工具中的緩存,重新啓用它允許腳本正常工作。爲什麼我的代碼依賴於緩存?在Firefox中禁用/啓用緩存不會導致任何問題編輯2:好吧,我想我越來越接近了。失敗的先決條件是if-modified-since條件(文件沒有改變)。我認爲chrome發送這個來確認是否使用緩存版本,但是,儘管前提條件失敗,它不會加載緩存版本。我認爲這可能意味着緩存已被破壞,所以我清除了緩存。不幸的是,這並不能解決問題。該文件將愉快地加載一次,但在下次我回到我開始處理同一問題時。有任何想法嗎?
你是否明確地從你的服務器傳遞'412'。如果你是從看服務器代碼中得到一些提示,那究竟是什麼前提失敗?嘗試調試您的服務器代碼。 –
它正在加載一個靜態文件,所以在這種情況下沒有服務器代碼。我相當確定這與服務器無關,否則Firefox會遇到同樣的問題。 –
它不是問題出在服務器上。服務器如何處理它可能會給出關於chrome開發工具正在做什麼的一些線索。也許它是發送一些頭部,你的框架(如果你使用的)不能很好地發揮。 –