我对 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 ';
}
}
});
}
}
我遇到的问题是,一旦进行 ajax 调用,它似乎就会进入下一个循环,而不是等待它完成。有没有办法修改它,以便在之前的更新之前不会尝试下一个问题?
编辑:我想也许可以将其保留在递归方法中,该方法不断调用自身直到完成。
最佳答案
默认情况下,ajax works asynchronously .
将 async
设置为 false
以防止出现这种情况。
$.ajax(
{
type: "POST",
url: '/assessmentquestion/create',
async: false,
etc...
关于javascript - jQuery ajax 调用的代码执行如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10519321/