2012-02-03 50 views
0

我正在使用jQuery.getJSON()連續三次使用不同參數命中同一個Web服務。然後我用我收到的數據繪製圖表。這個問題雖然很基礎,但完全不需要處理圖表。當我在回調函數中獲取數據時,它並不總是「正確的」數據。例如:jQuery.getJSON與JSONP返回相同的數據用於不同的調用

var URL1 = http://mysite.com/myAPI/metrics?type=pageloads&date=02022012&callback=? 
var URL2 = http://mysite.com/myAPI/metrics?type=formsubmissions&date=02232012&callback=? 
var URL3 = http://mysite.com/myAPI/metrics?type=uniqueusers&date=02022012&callback=? 

var getDataAndDraw = function(metricURL, chartDiv) { 
    $.getJSON(metricURL, function(data){ 
     console.log(data.metricName); 

     // i do my charting here 
    }); 
}; 

getDataAndDraw(URL1, 'pageloadsDiv'); 
getDataAndDraw(URL2, 'formsubmissionsDiv'); 
getDataAndDraw(URL3, 'uniqueuserDiv'); 

有時我會得到正確的3個圖形,控制檯顯示預期的指標名稱。但有時我會得到一些相同的組合。例如...我將顯示兩次頁面加載指標和一次唯一用戶指標,並且控制檯將顯示頁面加載數據已返回兩次,唯一用戶一次。

任何想法,爲什麼會發生這種情況?

回答

3

AJAX請求很可能被緩存。這段代碼應該解決這個問題。

$(document).ready(function() { 
    $.ajaxSetup({ cache: false }); 
}); 
+0

感謝尼克,現在像一個魅力。 – Tom 2012-02-03 21:32:05

+0

不知道爲什麼它開始使用此解決方案,但現在不是。我認爲這是一種僥倖(我缺乏廣泛的測試)。我正在查看緩存的設置,並且由於幾個原因,它似乎不會影響這種情況...... ** 1。**對於jsonp請求,**緩存默認爲false; ** 2。**我的3個鏈接有不同的網址,所以緩存它們會導致他們重複使用他們自己上次獲得的數據,而不是其他網址中的數據之一,這是我看到的行爲 – Tom 2012-02-06 21:17:23

相關問題