2013-01-18 218 views
1

比方說,我是$.post() -ing一個AJAX請求到一個腳本,執行以下操作:

echo "foo"; 
sleep(60); // block request for some time 
echo "bar"; 

將原始腳本觸發成功的功能,當它看到「富」,或當AJAX腳本終於「酒吧」響起後完成?

+2

你不能在每個函數之後通過console.log看看嗎? –

回答

2

響應到達時可能有幾個readystatechange事件,但當響應完成時,readyState僅更改爲4(加載)。

readystatechange事件發生和readyState屬性是4(已加載),和status屬性顯示了成功的狀態代碼(例如200)jQuery庫將調用success方法。

+0

在我看來,它在每個2xx或304'狀態上執行'success'。我錯了嗎? – Ragnarokkr

+1

@Ragnarokkr:是的,你是對的,有幾個成功的狀態代碼。 – Guffa

+0

啊,好的。你讓我懷疑。好。謝謝 :) – Ragnarokkr

1

之後的「酒吧」。 :)或者更確切地說,當它接收到狀態碼爲200的HTTP標頭。這意味着腳本已經完成執行。

+0

謝謝 - 讓我們說我想回復一個響應,但繼續在該AJAX腳本中做一些工作 - 我該如何處理?現在,我的腳本正在做大於60秒的工作,但在大約5秒鐘之後有足夠的信息返回響應。原始腳本認爲它是超時的,所以即使工作正在進行,源腳本看到的是超時,在某些情況下甚至會提交重複的ajax請求。 – Matthew

+1

@Matthew我建議讓你的服務器發送一個非常小的(0)超時的第二個腳本的http請求並捕獲超時錯誤,然後返回到ajax。然後你的第二個腳本繼續處理。 –

相關問題