2009-10-21 70 views
0

我正在使用prototype.js及其Ajax對象來實現交互圖形窗口小部件。我爲用戶需要的數據生成XML查詢,並使用Ajax.request將其發佈到服務器,並且似乎永遠與Firefox一起使用。 Firebug控制檯似乎在700毫秒左右顯示POST完成200 OK,但我安裝的onInteractive()處理程序(在readyState == 3時觸發的原型)在接下來的TWELVE SECONDS中觸發多次,然後我的onSuccess處理程序進程數據。爲什麼原型的Ajax請求需要很長時間來處理?

在我深入研究代碼之前,任何人都知道這裏發生了什麼?

+0

你在回覆中返回多少? – 2009-10-22 00:20:46

+0

關於一個兆字節的XML文本,取決於查詢範圍。 – Berry 2009-10-22 17:55:52

+0

稍後的一個快速awk腳本顯示,或多或少的緊湊JSON表示將會減少20倍,所以我來了服務器端腳本。我希望避免這種情況 - 最好有一件事情要比維持兩件事情更好 - 但是,性能提升將是值得的。 – Berry 2009-10-22 20:37:43

回答

0

事實證明,發生的事情是Firebug在readystate爲4時顯示POST完成,但沒有報告完成的事務,直到我的onSuccess處理程序完成,並且使用了兆兆字節的XML而。切換到更緊湊的JSON表示,而XML減少了繁瑣的XML解析來,或多或少:

eval(responseText); doGraph(); 

感謝您的意見,夥計們,他們是我需要的不完全是,但他們指出我在正確的方向,並且該功能現在非常漂亮。

1

由於readyState 3,XHR請求仍在處理中,因此可能會多次觸發您的處理程序。它有什麼作用?爲什麼你不能使用一個回調,並讓它在readyState === 4上被解僱?此外,您可以嘗試使用Firebug的網絡面板(頂部的'Net'選項卡)來查看所有時間需要的內容。

+0

所有「onInteractive」處理程序都會記錄它被觸發;它嚴格用於調試。我試圖弄清楚爲什麼在Firebug宣稱XHR完成之後花了很長時間。 Net標籤是一個好主意,謝謝。 – Berry 2009-10-22 17:49:40

相關問題