2011-11-30 110 views
6

有時在我的頁面上,我會同時執行很多ajax調用。這個想法是每個元素在數據變得可用時都會被更新(我不想排隊調用)。但是,有時候,網頁在所有ajax調用完成之前都不會更新任何元素。例如,我正在更新一行中的四張圖片 - 每張圖片都有自己的ajax回調函數,一旦數據可用,它將更新它的源代碼;代碼看起來是這樣的:頁面在更新之前等待所有AJAX調用完成

for (var i = 0; i < numPictures; i++){ 
    Dajaxice.Images.load_picture(callback_function, {'pictureId': i}); 
} 

的CALLBACK_FUNCTION將圖像到它的UI元素一旦其準備:

imgSnippet = '<img src="' + data.img_source + '"/>' 
$("#" + data.container_id).html(imgSnippet); 

(數據是從服務器接收到這個函數的對象)

我正在使用(如您在示例中看到的)dajax(用於django的插件)用於AJAX功能。在服務器端,我有一個Apache(2.2)通過mod_wsgi運行django 1.3。

當執行時,即使某些ajax調用較早完成(我可以在我的服務器上看到它),頁面將不會更新任何元素,直到最後一次調用返回。

有什麼建議嗎?

感謝,

+1

這是http://stackoverflow.com/questions/7504264/ajax-simultaneous-loading-of-multiple-images的重複,其中人們似乎已經回答了您的問題。情況並非如此嗎? – dyoo

+1

ajax調用是否同步?如果是這樣,您可能無法獲得屏幕更新,直到您將javascript控件返回給系統。 – jfriend00

+0

@dyoo:好點,但實際上並非如此。我看到這發生在多線程Apache服務器上 – Goro

回答

1

我建議做一個數組來保存所有的圖像,並作出新的功能,將顯示圖像時,按年增長得到了他們所有的服務器,並在回調的foreach圖像增加q預定義的計數器,當該計數器等於圖像的數量顯示的照片和零計數器,你可以把圖片應該直到其中的所有地方的加載qll你 對不起,我沒有寫你的代碼,但我在手機上如果我的回答不明確,我可能會稍後再發布它

1

您可能可以通過將回調函數的內容用setTimeout呼叫時間爲0或1毫秒。這樣可以讓系統更新屏幕。

相關問題