Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.04.2013, 22:25
Новичок на форуме
Отправить личное сообщение для dracula1985 Посмотреть профиль Найти все сообщения от dracula1985
 
Регистрация: 25.04.2013
Сообщений: 2

Ожидание ответа от $.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 запросов почти мгновенно и потом уже приходят от них ответы... беспорядочно особенно если будет выполнение каждого запроса иметь разное время ... да и запросов до нескольких десятков может быть и не желательно их все скопом посылать...

Так вот как сделать паузу до того момента пока не вернутся данные с сервера и не исполнится колбек функция, и после уже чтобы посылался следующий запрос?
Ответить с цитированием
  #2 (permalink)  
Старый 25.04.2013, 22:52
Аватар для Tek
Tek Tek вне форума
Профессор
Отправить личное сообщение для Tek Посмотреть профиль Найти все сообщения от Tek
 
Регистрация: 22.02.2012
Сообщений: 212

Попробуй так
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, 25.04.2013 в 23:02.
Ответить с цитированием
  #3 (permalink)  
Старый 25.04.2013, 22:59
Новичок на форуме
Отправить личное сообщение для dracula1985 Посмотреть профиль Найти все сообщения от dracula1985
 
Регистрация: 25.04.2013
Сообщений: 2

Tek,
Ок, так работает, сейчас попробую подделать под свои нужды...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление страницы после получения ответа от сервера potrashitel AJAX и COMET 9 24.02.2015 10:04
[Node.js, jQuery, nginx] Ошибка получения ответа на POST-запрос от сервера bukvaG AJAX и COMET 0 14.12.2012 10:52
Обработка ответа после POST-запроса (jQuery - Ajax) battrack jQuery 6 29.07.2012 16:06
Убрать ожидание от сервера Tokaypshi AJAX и COMET 8 29.09.2010 10:29
Активация кнопки при вводе верного ответа JukiPuki Общие вопросы Javascript 3 08.02.2010 23:12