javascript - Ajax 调用中的 Ajax 调用,第一个总是完成?

标签 javascript jquery ajax

我有一个ajax调用,它基于返回值,通过影响其url参数来调用另一个ajax调用,该url被第一个返回值修改。这两个调用是相关的,因为第一个调用提供第二个调用的 url 参数,并且其输出附加到一个全局变量,该变量用于生成最终的 HTML 集,随后附加到第一个调用中。作为一个简化的示例:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
var masterHtml = '';

$.ajax({
url: "http://thisisanexample/items",
type: "GET",
asynch: false,
contentType: "application/json;odata=verbose",
headers: {
    "Accept": "application/json;odata=verbose",
    "X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function (data) {
    successHandler(data);
},
error: function (data) {

}
});

function successHandler(data) {
var results = data.d.results;
for (var i = 0; i < results.length; i++) {
    var someHtml = results[i]["someHtml"];
    masterHtml = masterHtml + someHtml;
    var nextThingUrl = results[i]["nextThingUrl"];
    // now go get the other HTML, and append it to the masterHtml, 
    //this is a series of child elements to the someHtml variable above
    $.ajax({
        url: "http://thisisanexample/+ " + nextThingUrl,
        type: "GET",
        asynch: false,
        contentType: "application/json;odata=verbose",
        headers: {
            "Accept": "application/json;odata=verbose",
            "X-RequestDigest": $("#__REQUESTDIGEST").val()
        },
        success: function (data) {
            successHandlerChildren(data);
        },
        error: function (data) {

        }
    });
    jQuery('#magictime').append(masterHtml);
}
}

function successHandlerChildren(data) {
var results = data.d.results;
for (var i = 0; i < results.length; i++) {
    var someMoreHtml = results[i]["someMoreHtml"];
    masterHtml = masterHtml + someMoreHtml;
}
}

我的问题是第一个 ajax 调用总是在发出第二个调用之前完成,因此我得到第一组 HTML,而第二个调用提供了我需要的一些 HTML。这会打乱操作顺序。我缺少什么?蒂亚!!!

最佳答案

异步选项拼写错误,正确的是:

异步:假

关于javascript - Ajax 调用中的 Ajax 调用,第一个总是完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46507248/

相关文章:

javascript - 如何使用jquery函数结果作为html.action中的参数link

javascript - 检查我的cookie

javascript - Reactjs - 强制刷新的工作流程是什么?

javascript - 使用 a4j :commandButton 防止双重提交

javascript - 在 GetStream io 中从浏览器更新事件

javascript - 全日历中的多个工作时间,每天两类

jquery - AJAX 自动完成响应格式

events - 将事件处理程序绑定(bind)到多个元素 jQuery?

ajax - Slim Framework - jQuery $.ajax 请求 - Access-Control-Allow-Methods 不允许方法 DELETE

javascript - 使用 ajax jQuery 解析 JSON