比方說,我是$.post()
-ing一個AJAX請求到一個腳本,執行以下操作:
echo "foo";
sleep(60); // block request for some time
echo "bar";
將原始腳本觸發成功的功能,當它看到「富」,或當AJAX腳本終於「酒吧」響起後完成?
比方說,我是$.post()
-ing一個AJAX請求到一個腳本,執行以下操作:
echo "foo";
sleep(60); // block request for some time
echo "bar";
將原始腳本觸發成功的功能,當它看到「富」,或當AJAX腳本終於「酒吧」響起後完成?
響應到達時可能有幾個readystatechange
事件,但當響應完成時,readyState
僅更改爲4(加載)。
當readystatechange
事件發生和readyState
屬性是4(已加載),和status
屬性顯示了成功的狀態代碼(例如200)jQuery庫將調用success
方法。
在我看來,它在每個2xx或304'狀態上執行'success'。我錯了嗎? – Ragnarokkr
@Ragnarokkr:是的,你是對的,有幾個成功的狀態代碼。 – Guffa
啊,好的。你讓我懷疑。好。謝謝 :) – Ragnarokkr
之後的「酒吧」。 :)或者更確切地說,當它接收到狀態碼爲200的HTTP標頭。這意味着腳本已經完成執行。
謝謝 - 讓我們說我想回復一個響應,但繼續在該AJAX腳本中做一些工作 - 我該如何處理?現在,我的腳本正在做大於60秒的工作,但在大約5秒鐘之後有足夠的信息返回響應。原始腳本認爲它是超時的,所以即使工作正在進行,源腳本看到的是超時,在某些情況下甚至會提交重複的ajax請求。 – Matthew
@Matthew我建議讓你的服務器發送一個非常小的(0)超時的第二個腳本的http請求並捕獲超時錯誤,然後返回到ajax。然後你的第二個腳本繼續處理。 –
你不能在每個函數之後通過console.log看看嗎? –