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) с итерацией на единицу больше.
Всё довольно просто. Немного доработав и расширив AJAX цикл с передачей параметра, Вы сможете добиться больших результатов. Не забывайте, что помимо итерации Вы также можете передавать в функцию и другие параметры (например, значение, при котором необходимо остановить работу скрипта).
Комментарии
Здесь еще никто не оставлял комментарии.