gpt4 book ai didi

javascript - jQuery:执行同步 AJAX 请求,然后执行一系列其他 ajax 请求

转载 作者:行者123 更新时间:2023-12-02 21:47:07 30 4
gpt4 key购买 nike

我有一个 ASP.NET MVC 应用程序,我正在尝试在 javascript 函数中使用 jQuery 来创建一系列操作。该函数由三部分组成。

我想做的是:如果满足某些条件,那么我想执行同步 jQuery ajax 调用 CheckData。取决于返回的结果:

  • 它返回 ok -> 我想继续按此顺序执行第 2 部分,最后执行第 3 部分。
  • 它返回 Nok -> 然后完成并返回。它不会继续执行第2部分和第3部分。

所以我设置了 async: false 但它不起作用,程序继续执行第2部分和第3部分。我知道 async:false 已被弃用,那么我该如何实现这一点呢?

function onCheckValidData()
{
// do something....

// PART 1 STARTS HERE

if (some_condition_is_satified)
{
$.ajax({
url: '@Url.Action("CheckData", "MyController")',
async: false,
type: "POST",
dataType: "JSON",
beforeSend: function () {
showLoading();
},
success: function (result) {
if (!result.isOk) {
return;
}
},
complete: function(){
hideLoading();
}
});
}

// PART 2 STARTS HERE

// do something.....
// continue doing more thing.....
// more things.....

// PART 3 STARTS HERE

$.ajax({
url: '@Url.Action("MyActionMethod1", "MyController")?' + paramsStr,
type: "POST",
dataType: "html",
beforeSend: function () {
showLoading();
},
success: function (result) {
if (result == 'True') {
jsMethod2(); // jsMethod2 is another javascript method which contains another $.ajax block
}
else if (result == 'False') {
jsMethod3(); // jsMethod3 is another javascript method which contains another $.ajax block
}
else {
alert(result);
}
},
complete: function(){
hideLoading();
}
});
}

我在 Controller 中的操作:

    private JsonResult CheckData()
{
MyBoolResult res = new MyBoolResult();

// do something....

return Json(new { isOk = res.isOk });
}


public String MyActionMethod1(String param1, String param2, bool param3, string param4, string param5)
{

// do something

return condition ? "True" : "False";
}

最佳答案

无需使其同步。如果您希望“第 2 部分”和“第 3 部分”等待 ajax 请求完成,只需将它们放入一个函数中并在成功时调用它们:

function onCheckValidData()
{
// do something....

// PART 1 STARTS HERE
if (some_condition_is_satified)
{
$.ajax({
url: '@Url.Action("CheckData", "MyController")',
type: "POST",
dataType: "JSON",
beforeSend: function () {
showLoading();
},
//Success will execute only if the ajax-request is finised
success: function (result) {
if (!result.isOk) {
return;
}
part2();
part3();
},
complete: function(){
hideLoading();
}
});
}

// PART 2 STARTS HERE
function part2 () {/*do something.....*/}

// PART 3 STARTS HERE
function part3 () {/*$.ajax({...})*/}
}

关于javascript - jQuery:执行同步 AJAX 请求,然后执行一系列其他 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60228416/

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