2012-02-28 144 views
3

我有一個非常大的報告,我必須生成,並且我正在使用兩個jQuery AJAX請求來執行此操作。第一個發送命令來檢查報告。第二個是「checkStatus」函數,它只報告我在原始函數中設置的標誌的狀態。jQuery AJAX請求在長請求中中止後重新發送

但是,大約一分鐘後,原始請求讀取「中止」,服務器日誌顯示第二個「getReport」請求已啓動。 Firebug不會顯示第二個請求,但肯定會有人進來。服務器絕對不會在原始請求中超時,因爲報告最終會生成。唯一的問題是,如果是15分鐘的報告,我有15個服務器飢餓的請求同時運行,最終導致我們的服務器崩潰。最後,如果我關閉運行請求的瀏覽器窗口,它不會導致多個請求,所以它肯定來自瀏覽器。

哦,它在我的本地主機上正常工作,但死在真正的服務器上,儘管相同的一切(甚至PHP版本)。

這是一個超級奇怪的問題。有任何想法嗎?

+0

你使用什麼瀏覽器? – wajiw 2012-02-28 19:09:53

+0

同樣在每個瀏覽器中,mac:chrome,safari,FF。 Windows:IE 8/9,FF,Chrome – 2012-02-28 19:19:55

+0

你有沒有找到這個解決方案?我遇到了同樣的問題(長時間的請求被中止,然後以靜默方式重新發送)。 – 2013-09-18 23:22:13

回答

0

我會嘗試通過對報告進行積極的回報來調試它,而不運行報告來查找代碼中哪裏失敗。這個問題可能來自您的任何JS/Apache /後端腳本區域。

如果應用程序從ajax - > server - > client沒有進行您的報告調用,然後你的報告代碼中的東西導致請求炸彈。

+0

即註釋掉它的實際報告生成方面,看看我能否得到回報?我做。沒問題。我認爲這不是報告調用 - 在localhost上可以正常工作。但Apache後端有一些可能性。我們確實在所有地方都使用AJAX,所以大部分時間AJAX都可以正常工作。這只是偶爾... – 2012-02-28 19:55:33

+0

另外,另一個新的發展。我添加了一些阻止來自多個請求的代碼(檢查是否正在運行,如果是,則返回)。報告有效,但檢查狀態功能會在一段時間後停止運行。 – 2012-02-28 20:37:53

+0

您可能想要考慮重新設計您的呼叫,以便儘可能減少對方的依賴。似乎它太複雜了,調試可能比找到一個不同的解決方案需要更長的時間。確保你的所有ajax調用都不依賴於系統進程(即生成報告)。找到一種僅用於獲取已處理數據的AJAX的方法可能比您嘗試使用的方法更好。阿賈克斯投票是你的朋友=) – wajiw 2012-02-28 21:46:21