我注意到有時(隨機)我的Mootools ajax請求獲取兩次。第二個請求立即成功,但第一個請求只是無限期地等待。我不確定這是否是Mootools中的一個錯誤,或者我已經完成了一些事情。隨機複製ajax請求
這已經在firefox和firefox開發者控制檯中用chrome驗證過。我無法在IE中驗證它,但症狀是一樣的。
我實際上設法採取放火的顯示問題的屏幕截圖:http://janipeltoniemi.net/ajax.png
在你看到請求循環劇本我寫的用於測試目的的權利。它只是在前一個請求完成後用一個新的ID進行請求,所以沒有什麼特別。控制檯中的最後2行顯示了我遇到的問題。正如你所看到的,他們都有相同的迴應和相同的ID。 md5散列使用md5(microtime(1))
生成,因此如果這兩個實際上是具有相同ID的不同請求,它應該是不同的。
循環在該點停止,因爲它在最後一個完成時不觸發onSuccess事件。我猜它會在另一個請求完成時觸發它,但那還沒有發生。
任何想法發生了什麼?
差點忘了,我使用MooTools的1.2.4
圖像中的代碼:
r = new Request.HTML();
counter = 0;
//increments the counter and requests hello.php
go = function() {
counter += 1;
//The loop was too fast and producted some side effects when delay was not used
r.get.delay(10, r, [ 'templates/hello.php', { counter: counter } ])
}
//Create an endless loop. When the request from go() is finished, call go()
r.addEvent('success', go);
//Start the endless loop
go();
你必須發佈你的代碼。 – 2010-07-19 18:13:27
這並不顯示什麼事件驅動ajax請求本身。 – 2010-07-20 07:45:56
我不知道我明白。問題不在於上述代碼的具體情況。這只是一個快速重現問題的方式,並且是所需的所有代碼(除了Mootools核心1.2.4)。 我認爲這裏的問題是通過正確地獲取消息,因爲我的英語不好,所以讓我再試一次: 代碼應該在firebug中按原樣運行。當前一個完成時,它會啓動一個無限循環,並執行另一個請求。在某些時候,請求被複制(檢查圖像)並且'onSuccess'沒有被觸發,所以循環停止。請參閱代碼中的註釋以獲取更多信息。 – jpeltoniemi 2010-07-20 10:56:35