gpt4 book ai didi

javascript - 使用 jquery 进行顺序 ajax 查询

转载 作者:行者123 更新时间:2023-12-03 11:15:44 25 4
gpt4 key购买 nike

我花了很长时间试图通过各种代码迭代来解决这个问题,但没有成功。来自 php 背景的我对 javascript 很陌生。

假设一个包含三个补丁的数组:patch1、patch2、patch3。我想要实现的是:

  1. 每个补丁对同一个 php 脚本进行 ajax 调用,但每次调用必须在前一个调用完成后进行
  2. 完成所有 3 个操作后,将对单独的 php 脚本进行 ajax 调用。

第 2 点工作正常,第 1 点则不然。

下面是我的代码:所有 3 个补丁同时调用 myAjaxInitialData 函数(和底层 php 脚本),而不是等待每个补丁完成。正确的是,在所有补丁完成之前,不会调用 myAjaxGetSRCount。

<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>

最佳答案

您的问题似乎在这里:

$.when(myAjaxInitialData(divId,script,dataVar,data)).then(initialData(i));

then 接受回调,即函数。 initialData(i) 不返回任何内容,因此您将 undefined 传递到此函数中。如果您打算在此 ajax 请求之后调用 initialData,那么您需要将其包装在无参数函数中。

$.when(myAjaxInitialData(divId,script,dataVar,data)).then(function() { initialData(i); });

您还应该非常清楚,i 的值将是回调时的值。当关闭迭代器变量时,您应该在创建回调之前捕获您期望的值。即

if (i != x) {
i++;
var j = i;
$.when(myAjaxInitialData(divId,script,dataVar,data)).then(function() { initialData(j); });
}

关于javascript - 使用 jquery 进行顺序 ajax 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27355786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com