2013-07-23 69 views
2

jQuery的阿賈克斯成功回調射擊我有一個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

這很奇怪。而且可能不可能。你在代碼中添加了什麼斷點? – Neal

+1

'.error'已棄用 - 請使用'.fail'。 – Alnitak

+0

@Neal是的,我做了 - 我就是這麼想的,它立即進入回調函數而不是發出請求。當我檢查變量時,我發現所有傳遞給數據變量的變量都是空字符串(「」),沒有實際的內容。 – moberemk

回答

1

我最近遇到了同樣的問題:成功回調被觸發,響應數據是一個空字符串,沒有請求會顯示在開發人員工具中,並且沒有請求會觸發Web服務器。和你一樣,我認爲這不是緩存問題,因爲沒有任何證據表明請求(甚至是緩存的)出現在任何地方。

不過,我試過ajax()調用的cache參數設置爲false並設置各種原始服務器應答無緩存頭(在Django,使用@never_cache裝飾),這個問題似乎是固定的。兩天後,問題再也沒有出現。

+0

我很高興我不是孤身一人。但認真這可能是我得到的最好的建議,謝謝! – moberemk

1

請求/響應最有可能被緩存。看看你的調試器來驗證。

0

你可以運行類似於小提琴的東西,看看你的請求是否確實被髮送?另外,你說成功回調會在調用GET之後立即觸發 - 返回到您的成功回調的數據是否合適?

一種可能性是,chrome預先緩存了您的請求。你確實提到過有另一段代碼可以做出幾乎相同的調用 - 它實際上是否相同?或關閉?

+0

我檢查的第一件事是緩存,但是當我說「網絡」面板中什麼都沒有時,我什麼都沒有 - 沒有請求根本就沒有任何指示,而是由緩存處理。而其他代碼幾乎相同,它遵循相同的基本邏輯,但設置了不同的變量並調用了不同的URL。 – moberemk

+0

@moberemk在Chrome調試器中有一個小故障,如果你只是過濾xhr請求,其中一些不顯示。點擊任何其他過濾器,比回到xhr將使它們出現。 –

+0

@BradM這是很好的知道,但這是沒有任何過濾器;我列出了每個請求,包括CSS文件等資源請求,但仍不顯示。 – moberemk