/ / Кілька викликів AJAX з затримкою на сервері - jquery, ajax

Кілька AJAX-дзвінків з затримкою сервера - jquery, ajax

Я з розуму ставлюся з проблемою з Ajax дзвінками і моїм сервером Apache.

Я деякі скрипти php і один простий HTML з javascript.

var i = 0;
var t = 0;
function comenzar(){
$.get("testAjax2.php", function (data){
$("#container").append(data);
});
t = setTimeout(function(){
$("#container").append("timeout<br/>");
i++;
$.get("testAjax.php?i="+i, function (data){
$("#container").append(data);
});
if(i == 10)
clearTimeout(t);
}, 100);
}

PHP-файл testAjax2.php code:

sleep(10); //sleeps for 10 seconds
echo "done! testAjax2.php";

PHP-файл testAjax.php code:

echo $_GET["i"]."<br/>";

Люди Що ви думаєте про цей код?

Я не можу робити будь-які дзвінки ajax до завершення першого. Він показує номер один лише тоді, коли завершено виклик testAjax2 ajax.

Як я можу зробити кілька викликів ajax, коли перший має затримку сервера і продовжує здійснювати дзвінки?

Я повністю втрачений, я не знав такої поведінки про Ajax (або, можливо, Jquery?)

Дуже дякую

EDIT: Вибачте за мою англійську

Відповіді:

0 для відповіді № 1

Ось простий приклад для вашої вимоги. Я просто додав зворотній виклик успіху, що означає, що функція, призначена для зворотного виклику успіху, буде викликана один раз після того, як перший виклик AJAX буде успішним. У функції виклику ви додаєте наступний виклик AJAX.

$.ajax("testAjax2.php",
success: callNextFunction,
});

function callNextFunction(data)
{
$("#container").append(data);

$.get("testAjax.php?i="+i, function (data){

$("#container").append(data);

});
}

0 для відповіді № 2

Насправді проблема полягає в поведінці ajax. Тому що ajax є асинхронізованим, тому він не чекає відповіді і виконуватиме наступний запит ajax, так що якщо у вас є будь-яка операція, яка залежить від значення заявки або відповіді першого запиту ajax, ніж ви повинні помістити цей код у подію успіху методу ajax.