javascript - 在第一个 Jquery 完成之前第二个 Jquery json 被触发

标签 javascript jquery asp.net asp.net-mvc json

我有两个 javascript 函数,它们使用 jquery json 填充一些数据。两者都工作正常,但问题是第二个函数在第一个函数执行之前被调用。我的代码是:

$(document).ready(function () {        
    loadSubject();
    getTopic();       
});

function loadSubject() {
    var CourseId = document.getElementById('CourseId').value;
    alert('22222');
    jQuery.support.cors = true;
    $.ajax({
        url: 'http://220.45.89.129/api/LibraryApi',
        type: 'Get',
        contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
        data: { DataType: 'Subject', UserRecId: 0, ParentId: CourseId },
        dataType: 'json',
        success: function (data) {
            var subjectDivs = "";
            var divs = "";
            var i = 1;
            $.each(data, function (index, value) {
                divs = "";
                // Some code here
                i = i + 1;
            });
            subjectDivs = subjectDivs + divs;
            alert('11111');
            $('#cCount').val(i);
            document.getElementById('accordion').innerHTML = subjectDivs;
        },
        error: function (e) {
            alert(JSON.stringify(e));
        }
    });
}

function getTopic() {
    var c = $('#cCount').val();
    alert(c);
    for (var i = 1; i <= c; i++) {
        var subId = $('#hdn_' + i).val();
        jQuery.support.cors = true;
        $.ajax({
            url: 'http://220.45.89.129/api/LibraryApi',
            type: 'Get',
            contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
            data: { DataType: 'Topic', UserRecId: 0, ParentId: subId },
            dataType: 'json',
            success: function (data) {
                var topicDivs = "";
                var divs = "";
                tDivs = '';
                $.each(data, function (index, value) {
                    divs = '';
                    divs = '<div class="row">';
                    divs = divs + '<div class="subject">' + value.Name + '</div>';
                    divs = divs + "</div>";
                    topicDivs = topicDivs + divs;
                });
                $('#sDiv_' + i).html(topicDivs);
            },
            error: function (e) {
                alert(JSON.stringify(e));
            }
        });
    }
}

最佳答案

这不是 ajax get 的执行方式。如果你一个接一个地放置两个 jquery ajax 请求,那么它们将按顺序执行,不需要在第一个请求完成或收到第一个请求的响应后才执行第二个请求。

如果你希望这种情况发生,有两种方法

<强>1。使用 async:'false'

这会请求等待,直到收到响应,然后再执行 JavaScript 中的下一条语句。

What does "async: false" do in jQuery.ajax()?

<强>2。使用回调

编写您想要成功执行的第二个函数或完成第一个 ajax 请求的回调。

jQuery ajax success callback function definition

关于javascript - 在第一个 Jquery 完成之前第二个 Jquery json 被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28207558/

相关文章:

带有运行时数据的 JavaScript 工具提示?

javascript - 如何在查询之间进行 Sequelize $?

javascript - 如何通过 JSON 更新具有多个系列的 Highcharts?

javascript - 重用代码来淡入淡出元素,这样我就不必重复我的代码

c# - ASP.NET 对临时目录的访问被拒绝

asp.net - 将持久性 Cookies OnPassive Redirects 设置为 true 实际上有什么作用?

c# - ASP.net LINQ : return items where id equals a variable

javascript - 为 jQuery 使用 .text() 方法时如何保持换行符?

javascript - $(document).ready() 也准备好 CSS 了吗?

javascript - 输入后立即获取变量