关于jQuery ajax调用,代码执行如何工作?

Jho*_*rra 0 javascript jquery

我对javascript的理解一直是代码按顺序执行,因此下一行直到它执行上一行才执行.

我有类似以下的东西,我试图尝试一次保存一系列问题.

    for(var i = 1; i <= assessment_question_count; i++)
    {
        if(valid)
        {
            var sort = i;
            $.ajax(
            {
                type: "POST",
                url: '/assessmentquestion/create',
                data: 'assessment_id=' + assessment[1] + '&question_text=' + $('#assessment_question_text_' + sort).val() + '&assessment_question_type_id=' + 
                    $('assessment_question_type_' + sort).val() + '&sort_order=' + i,
                success: function (str) 
                {
                    var result = str.split('|');
                    if (result[0] == 'success') 
                    {
                        var message = '<br />Question saved ';
                        update_display_message(message);
                    }
                    else if(result[0] == 'fail')
                    {
                        valid = false;
                        var message = '<br />Error saving question ';
                    }
                    else 
                    {
                        valid = false;
                        var message = '<br />Error saving question ';
                    }
                }
            });
        }
    }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它似乎只要进行ajax调用就进入下一个循环,而不是等待它完成.有没有办法修改这个,所以它不会尝试下一个问题,直到以前的更新?

编辑:我想也许可以把它放在一个递归方法中,一直调用自己直到它完成.

Cur*_*urt 6

默认情况下,ajax异步工作.

设置asyncfalse防止这种情况.

$.ajax(
            {
                type: "POST",
                url: '/assessmentquestion/create',
                async: false,
                etc...
Run Code Online (Sandbox Code Playgroud)