gpt4 book ai didi

javascript - 在 jQuery AJAX 中使用异步选项

转载 作者:行者123 更新时间:2023-12-02 14:59:40 25 4
gpt4 key购买 nike

我对 jQuery 中的 AJAX 调用有疑问
这就是我要解决的问题:

  1. 调用服务器获取代码列表
  2. 对于每个代码,再次调用服务器以获取客户列表
  3. 显示结果

我有一个像这样的代码片段(它几乎是伪代码;只是想提及感兴趣的部分):

$('button#myButton').click(function() {
var codes = [];
var customers = [];

$.ajax({
// URL etc. Properties,
async: false
}).done(function(codes) {
// Update the values in the 'codes' array to be used later
});

// Use the 'codes' array to get the customers for each code
// and populate the 'customers' array
$(codes).each(function() {
$.ajax({
// URL etc. Properties,
async: false
}).done(function(customers) {
// Populate the 'customers' array
});
});

// Display the results (using both arrays) in a 'div'
});

现在,这是我的问题:
起初,我想使用 2 个嵌套的 getJSON 调用来完成此操作,但无论我如何努力,我都无法使其工作(第二个调用等待第一个调用完全完成,并且然后开始通话)

然后,在这里搜索,我看到有人建议将 async 函数设置为 false ,现在看来,调用的行为顺序与代码

我唯一不明白的是,我收到了有关主线程上的同步 XMLHttpRequest 已弃用的警告,并且在 jQuery 的网站中,提到使用 success/error/Complete 方法,但如果我禁用 async,那么调用的顺序就会困惑(至少我无法理解顺序),当我到达第二个调用时,我的codes 数组是空的,所以没有什么可做的!

感谢任何帮助,因为我花了一整个上午的时间试图让它发挥作用!

PS:正如我所说,代码正在运行,我只是对正确的方法感兴趣

更新

谢谢大家的回答。也许如果我提到我应该如何显示结果,它会让事情变得更清楚
我试图在表格中显示结果,其中包含“代码”、“费率”和“客户”

当我完成第一个 AJAX 调用时,我获得了前两列的值,因此我可以添加相应的 tr(和 td) ),但是当我到达第二个 AJAX 调用时,我必须遍历每个代码以获取每个代码的“客户”(从服务器)

如果我将所有逻辑放入第二个 AJAX 调用的 complete 方法中,我将拥有没有第三列的所有行,因此我需要以某种方式将客户添加到最后一个 td 每行,我不知道怎么办!!!

最佳答案

这些调用(或者至少应该)按照它们在代码中的顺序运行。但是,如果您删除 async: false,您将永远无法提前知道哪个先完成。
这就是为什么您应该使用回调方法。
就我个人而言,我会删除async: false并从第一个ajax的success函数中调用第二个ajax。

关于javascript - 在 jQuery AJAX 中使用异步选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35526983/

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