2013-07-04 3 views
0

Я с ума сходился с вызовами Ajax и моим сервером apache.Несколько вызовов AJAX с задержкой на сервере

У меня есть некоторые скрипты 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:

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

PHP код файла testAjax.php:

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

Люди Что вы думаете об этом коде?

Я не могу совершать какие-либо вызовы ajax, пока он не завершит первый. Он показывает номер один только после завершения вызова ajax testAjax2.

Как я могу выполнить множественный вызов ajax, когда первый имеет задержку сервера и продолжает звонить?

Я полностью потерял, я не знаю, что это поведение о Ajax

Спасибо большое

EDIT (или, может быть, Jquery?): Извините за мой английский

+0

Ват, вы имели в виду? Вам нужно выполнить второй вызов AJAX только после завершения первого вызова AJAX? – DON

+0

Ваш код действительно не имеет никакого смысла и вашего письма. Попробуйте переписать хотя бы текст на английском языке. – schlingel

+0

Правильно! Я имею ввиду это! – MrViSiOn

ответ

0

Вот является простой пример для вашего требования. Я просто добавил успешный обратный вызов, что означает, что функция, назначенная для обратного вызова успеха, вызывается один раз после первого вызова AJAX. В функции обратного вызова вы добавляете следующий вызов AJAX.

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

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

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

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

    }); 
} 
+0

Это не то, что я хочу ... Смысл этого заключается в том, чтобы знать, как происходит первый вызов ajax с функцией тайм-аута (и показать некоторый информационный текст о первом testAjax2.php). Что делать, если первый вызов ajax длится 10 минут (что-то делает с моей базой данных)? Я просто хочу знать, сколько осталось секунд, чтобы закончить функцию test2ajax (делая периодические вызовы с таймаутом). Извините за мой английский! – MrViSiOn

+1

@MrViSiOn Если вы сделаете вызов ajax, подождите 10 минут для ответа, это означает, что вы потребляете поток HTTPD в течение целых 10 минут. Поскольку большинство браузеров допускают только два одновременных потока HTTPD, я, вероятно, склонен не посещать ваш сайт. – Ohgodwhy

+0

Это не сайт ... Это приложение для PHP ... – MrViSiOn

0

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

+0

Попробуйте этот код, пожалуйста. Попробуйте, и вы увидите, что вы не видите 1,2,3,4,5 ... в то время как первый вызов ajax еще не закончен ... – MrViSiOn

+0

Хорошо, я пытаюсь объяснить себя. testAjax2.php делает много запросов cURL (сто) и записывает ответ HTMl в базе данных, я просто хочу узнать со вторым вызовом ajax, сколько строк, которые имеет таблица для отображения 0/100, 1/100, 2/100, 3/100 и т. Д. На веб-странице. Чисто? Спасибо за все... – MrViSiOn