Ожидание ответа от $.get()
Есть такой вопросик...
Как сделать выполнение n-ного количества запросов $.get() но чтобы каждый начинался ровно после того как будет получен ответ от предыдущего и выполнится колбек функция... например есть такой скрипт ind.html <html> <head> <meta charset='UTF-8'> <title>Test</title> <script src='jquery.js'></script> <script src='ind.js'></script> </head> <body> <span id='1' class='sp'>Раз</span><br> <span id='2' class='sp'>Два</span><br> <span id='3' class='sp'>Три</span><br> <span id='4' class='sp'>Четыре</span><br> <span id='5' class='sp'>Пять</span><br> <span id='6' class='sp'>Шесть</span><br> <span id='7' class='sp'>Семь</span><br> <span id='8' class='sp'>Восемь</span><br> <span id='9' class='sp'>Девять</span><br> <span id='10' class='sp'>Десять</span><br> <button id='btn'>Начать</button> </body> </html> ind.php эмитируется типа ответ от сервера с задержкой
<?php
$step = $_GET["step"];
$id = $_GET["id"];
if ($step==1){
Sleep(5);
echo json_encode(array("err"=>"0", "id"=>$id));
}
и int.js
$(function($){
$('#btn').click(function(){
var mass = ["1","2","3","4","5","6","7","8","9","10"];
$.each(mass,function(){
$.get('ind.php',{"step":1,"id":this},
function(json){
$('#'+json.id).css({"color":"red"});
},'json');
});
});
});
В таком виде посылается 10 запросов почти мгновенно и потом уже приходят от них ответы... беспорядочно особенно если будет выполнение каждого запроса иметь разное время ... да и запросов до нескольких десятков может быть и не желательно их все скопом посылать... Так вот как сделать паузу до того момента пока не вернутся данные с сервера и не исполнится колбек функция, и после уже чтобы посылался следующий запрос? |
Попробуй так
var count = 0
function ajax(){
if (count<10){
count++;
$.ajax({
type: "GET",
url: "test.js",
success:function(){
setTimeout("ajax",Math.random()); // Для случайной задержки))
}
});
}else{
count=0;
}
}
$('#btn').click(function(){
ajax();
});
|
Tek,
Ок, так работает, сейчас попробую подделать под свои нужды... |
| Часовой пояс GMT +3, время: 10:48. |