Я з розуму ставлюся з проблемою з 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.