html()在alert()显示之前未更新

时间:2016-11-24 09:07:02

标签: javascript jquery callback

自从我从jQuery 1.11迁移到jQuery 3.0后,我遇到了一个问题。我正在运行jQuery POST请求,在迁移之前它首先完成html(data.responseText),然后继续使用后面的代码。像这样:

$.ajax({
    type: "POST",
    url: "/files/" + url,
    data: $("#entryForm").serialize() + '&journal_id=' + journalId,
    complete: function(data) {
        $('#saveResults').html(data.responseText);
        alert("function done");
    }
});

在data.responseText中,首先运行alert,在完成功能html()之后运行另一个alert("function done")

迁移后,alert("function done")首先运行,因此此时功能html()尚未完成,因为来自responseText的警报将在alert("function done")之后。所以我尝试了这个:

$.ajax({
    type: "POST",
    url: "/files/" + url,
    data: $("#entryForm").serialize() + '&journal_id=' + journalId,
    complete: function(data) {
        $('#saveResults').html(data.responseText).promise().done(function() {
            alert("function done");
        });
    }
});

不幸的是,这并没有解决我的问题。任何人都知道如何解决它?

1 个答案:

答案 0 :(得分:0)

试试这个。

.html在响应返回时设置,当成功完成时,将运行完成

success: function(data){
    $('#saveResults').html(data.responseText);
},
complete: function(data)
{
    alert("function done");
}