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