我正在使用Laravel和Jquery構建一個網站。該頁面發出多個AJAX調用。AJAX調用停止頁面加載其他元素
其中一個調用可能需要幾秒鐘,它似乎阻止加載頁面的其他元素。這包括圖像和其他AJAX調用。
我的代碼或多或少看起來像這樣。
$.ajax({
async: true,
url: url,
data: {
//data
},
success: function (response) {
//Process response (append html, images, etc.)
for (var key in response) {
newAJAXCall(response[key]);
}
},
error: function (xhr) {
}
});
newAJAXCall調用如下:
$.ajax({
async: true,
url: url,
data: {
//data
},
success: function (response) {
//Process response
},
error: function (xhr) {
}
});
newAJAXCall是什麼導致了問題。一些呼叫在200毫秒內完成。但有些可能需要幾秒鐘。發生這種情況時,如果有任何元素尚未加載,則停止加載。
在圖像的情況下,它們的html已經存在。瀏覽器停止加載它們直到AJAX調用完成。
我已經嘗試設置異步並使用超時,但似乎沒有解決它。 Chrome和Safari都出現這個問題,所以它似乎並不是瀏覽器特有的。
編輯:即使當for循環被刪除,並且只有當問題一直存在,如果通話持續很長時才發出新的ajax調用。編輯2:Laravel/Php可能限制單個客戶端可以打開的連接數量嗎?
EDIT3:它似乎是我的服務器導致問題。當我從不同於我自己的服務器加載圖像時,它們在ajax請求期間加載正常。
你的newAJAXCall函數是什麼?你是否也使它異步? –
這是一個類似的AJAX調用,除了這個不會發出新的AJAX調用。我將這兩個設置爲異步。 – Yoran
我相信這是導致你的問題的for循環。你可能需要改變你使用newAJAXCall()的方式http://stackoverflow.com/questions/4288759/asynchronous-for-cycle-in-javascript –