Я потратил немало времени, пытаясь понять это с помощью различных итераций кода, но не повезло. Исходя из php-фона, я новичок в javascript.Последовательные запросы ajax с jquery
предположим массив из трех исправлений: patch1, patch2, patch3. Что я пытаюсь достичь:
- Ajax вызов к тому же PHP скрипт для каждого патча, , но каждый вызов должен быть сделан только после того, как предыдущий вызов завершен
- После всего 3 завершается вызов ajax для отдельного сценария php.
Пункт 2 работает нормально, точка 1 не так.
Ниже мой код: myAjaxInitialData func (и базовый скрипт php) вызывается одновременно для всех 3 патчей, а не ждет завершения каждого из них. MyAjaxGetSRCount, правильно, не называется unitl, все патчи завершены.
<body onload="initialData(0)">
<script>
function initialData(i) {
var patches = [<?php echo $jsPatchArray ?>];
var x = patches.length - 1;
var divId = "#initialData-patch-" +i;
var script = "ajax_initial_data.php";
var dataVar = "patch";
var data = patches[i];
if (i != x) {
i++;
$.when(myAjaxInitialData(divId,script,dataVar,data)).then(initialData(i));
} else {
$.when(myAjaxInitialData(divId,script,dataVar,data)).then(myAjaxGetSRCount);
}
}
function myAjaxInitialData(divId,script,dataVar,data) {
return $.ajax({
type: "GET",
url: script,
data: {patch:data},
success: function(response) {
$(divId).html(response);
}
});
}
function myAjaxGetSRCount() {
document.getElementById('srCount').innerHTML="Retrieving SR Counts..";
$.ajax({
type: "GET",
url: "ajax_sr_count.php",
success: function(response) {
$("#srCount").html(response);
}
});
}
</script>
Спасибо Тим - обработал удовольствие - не может претендовать на понимание функции() {initialData (j); } 'vs plan old' initialData (j) ', но это, без сомнения, из-за статуса js noobie - еще раз повторит поиск. –
@DaveF Последний выполняет 'initialData' с' j' в качестве параметра; первая создает функцию, которая делает то же самое. Он работает, потому что вы не хотите немедленно запускать 'initialData'; вы хотите сказать что-то еще, чтобы выполнить его, когда это будет сделано. –