Я заметил, что иногда (случайным образом) мой ajax-запрос Mootools отправляется дважды. Второй запрос выполняется сразу же, но первый просто ждет бесконечно долго. Я не уверен, что это ошибка в Mootools или что-то, что я сделал.
Это было проверено с помощью firebug в Firefox и консоли разработчика в Chrome. Я не мог проверить это в IE, но симптомы те же.
Мне действительно удалось сделать скриншот Firebug, показывая проблему: http://janipeltoniemi.net/ajax.png
Справа вы видите скрипт цикла запроса, который я написал для целей тестирования. Он просто делает запрос с новым идентификатором после того, как предыдущий запрос был выполнен, так что ничего особенного там нет. Последние 2 строки в консоли демонстрируют проблему, с которой я столкнулся. Как видите, они оба имеют одинаковый ответ и одинаковый идентификатор. Хеш md5 генерируется с использованием md5(microtime(1))
, поэтому он должен отличаться, если эти 2 на самом деле были разными запросами с одинаковым идентификатором.
Цикл останавливается в этой точке, потому что он не запускает событие 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();