背景jQuery的 - 更新jquery.sparkline後異步數據獲取
我使用jquery.sparkline生產Pie Charts。餅圖的數據包含在一個數組中。
當第一次加載頁面時,會調用Web服務(使用.ajax)來獲取數據,此處指定的回調將接收到的數據並更新與餅圖關聯的數組。
當屏幕上的下拉列表更改值時,會調用相同的更新過程。
形勢
如果我設置了阿賈克斯來電ASYNCH = false這一切工作正常。
如果將.ajax調用設置爲asynch = true,則餅圖中顯示的結果始終是「後面一個刷新」。通過這個我的意思是最初沒有派,然後當下拉改變時,派生出來的應該是它最初的樣子。
代碼
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
url: requestURL,
async: true ,
success: function (data) { successCallback(data); },
error: function (data) { failureCallback(data); }
});
幫助? 任何人都認識到這個問題?
選項 我一直在尋找的Observer模式變化,以監測變化的陣列和(不知道如何)說服jquery.sparkline對象重繪自身,但是這太瘋狂了,我當然,我必須忽略更直接的東西。
由於加雷和他的樣本代碼,我能看到我在做什麼錯誤(這不是什麼做jquery.sparkline。
我有一些像這樣的功能:
function RefreshPieChart(){
//First call managePieDataFetch()
//to kick off the web-service request
managePieDataFetch();
//now reinitialise the jquery.sparkline
//pie charts on the basis that the
//array variable initialised in
//pieDataFetchCallBack() has the newest
//data in it.
//
//.... It hasn't !
}
function managePieDataFetch(){
//invoke the .ajax call and
//provide function pieDataFetchCallBack() as
//a call back function
}
function pieDataFetchCallBack(){
//post process the data
//returned from a successful
//ajax call. Place the results
//into an array variable at
//script scope
}
感謝你的示例代碼給了我信心,我所做的是從jquery.sparklines的角度來看是正確的,因此讓我看到我真的做錯了(對異步調用的工作做出愚蠢的假設) – glaucon
對不起,我應該已經說過我編輯了我的原始問題,以擴展我做錯了什麼,希望它能告訴其他人。 – glaucon
@gareth您的第一個超鏈接返回404錯誤 – hughesdan