Вопрос по функции ajax в jquery

F
На сайте с 03.10.2006
Offline
160
1789

Использую такой код:


var content = '';
var last_did = 0;

for (i=0; i<20; i++) {
$.ajax({
async: false,
url: '/prp_test_ajax.php',
data: 'last_did=' + last_did,
dataType: 'script',
success: function(data){
$('#ajax_prp_container').append(content);
$('#ajax_prp_hidden').text(last_did);
}
});
}

Этот код обращается к файлу prp_test_ajax.php, который отдаёт ему готовые js переменные last_did и content. Мне нужно запрос к файлу prp_test_ajax.php формировать используя переменную last_did. Для того, чтобы это сделать я использую async: false, так как с async: true переменная last_did постоянно равна нулю. Но мне нужно, также, установить таймаут в одну секунду между итерациями. Проблема в том, что timeout: 10000 не работает для функции ajax, если async: false. Все другие попытки использовать разные таймауты в скрипте, тоже не дали результата. Может кто-то знает, как решить эту задачу?

juniorspecialistphp
На сайте с 08.08.2010
Offline
25
#1

А если использовать функцию ПХП "Sleep(1);" между итерациями цикла?

Пишу скрипты любой сложности на РНР. (http://elagin.su)
P
На сайте с 19.03.2009
Offline
17
#2

Может так попробовать?


var content = '';
var last_did = 0;

for (i=0; i<20; i++) {
$.ajax({
async: false,
url: '/prp_test_ajax.php',
delay: 10000,
data: 'last_did=' + last_did,
dataType: 'script',
success: function(data){
$('#ajax_prp_container').append(content);
$('#ajax_prp_hidden').text(last_did);
}
});
}

Если не получится, рекомендую смотреть в сторону функции queue() http://api.jquery.com/queue/ - позволяет создавать очередь выполнения. Идея такая - надо создать рекурсивную функцию, которая выполнялась бы с задержкой delay() и ставила вызов самой себя в очередь queue()

Помогу с вёрсткой, html, css, js, jquery, php, mysql ($) icq 8938933 Быстрый, удобный и недорогой хостинг (http://sweb.ru/p17046) Виза в Великобританию (http://www.englishexpert.ru/velikobritaniya/viza/viza-v-velikobritaniu/)
F
На сайте с 03.10.2006
Offline
160
#3
juniorspecialistphp:
А если использовать функцию ПХП "Sleep(1);" между итерациями цикла?

Я уже использую sleep(1); в PHP, но это не правильный подход. Мне нужен таймаут именно в JS.

poyzn, для функции ajax в jQuery используется "timeout: 10000", а не "delay: 10000", но я пробовал уже использовать timeout. Он не работает при "async: false".

poyzn:
Если не получится, рекомендую смотреть в сторону функции queue()

Спасибо за подсказку. Попробую использовать предложенную вам функцию.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий