AJAX цикл с передачей параметра

Выполнить работу какого-либо скрипта с помощью AJAX не составляет особого труда. Но как быть, если необходимо выполнить последовательную передачу параметра и выполнение скрипта с помощью цикла? Из статьи мы узнаем, как правильно использовать цикл в AJAX.

Для чего это может пригодиться? Например у Вас имеется пара сотен тысяч записей, которые Вы хотите обработать на своём сайте. Обработка такого количества с помощью PHP скрипта может занять очень продолжительное время и вызвать ошибку 504 Gateway Timeout, т.е. будет превышен допустимый интервал времени выполнения скрипта. В этом случае лучше будет обрабатывать одну запись в Вашем PHP скрипте, а с помощью AJAX просто передавать необходимые параметры (например, итерацию или ID записи).

Как это работает:

Предполагается, что у Вас уже написан необходимый скрипт на PHP, в который будем последовательно передавать параметры и выполнять его.

Обязательно убедитесь, что у Вас подключена библиотека jQuery. Добавьте следующий код скрипта:

jQuery(document).ready(function () {
	function ajaxwithi(i) {
		jQuery.ajax({
			url: 'work.php?params='+i,
			type: 'GET',
			complete: function() {
				if (start < 500) {
					ajaxwithi(i + 1);
				}
			},
			success: function(result) {
				jQuery('#result').html(result);
			}
		});
	}
	
	ajaxwithi(i);
});

Теперь разберем по порядку. Функция ajaxwithi(i) - это функция, которую мы вызываем по запросу, передавая в нее значение итерации. С помощью url: 'work.php?params='+i мы вызываем необходимый нам PHP файл скрипта, передавая необходимые параметры. Тип запроса определяем как GET.

Обратите внимание, что код, описанный в блоке success, будет выполнен только после получения ответа на запрос (в нашем случае мы результат выполнения скрипта выводим в блок с идентификатором #result). Т.е. если произойдет ошибка - код дальше выполняться не будет. В блоке complete описана функция, которая будет выполнена даже при возникновении ошибки выполнения скрипта, поэтому чтобы цикл не прерывался мы добавили вызов функции ajaxwithi(i + 1) с итерацией на единицу больше.

Всё довольно просто. Немного доработав и расширив скрипт, Вы сможете добиться больших результатов. Не забывайте, что помимо итерации Вы также можете передавать в функцию и другие параметры (например, значение, при котором необходимо остановить работу скрипта).


Оставьте свой комментарий

Оставить комментарий от имени гостя

0 / 2500 Ограничение символов
Ваш текст должен быть в пределах 10-2500 символов
Комментарии | Добавить свои
  • Комментарии не найдены