使用JQuery和Ajax将我的函数async:false更改为async:true

时间:2017-06-07 14:29:16

标签: javascript jquery ajax asynchronous

我在javascript类中创建了一个函数,该类转到php文件并从数据库返回信息。

这个功能效果很好,但我尝试使用 async:true,,但我的功能不适用于这个功能。 (我有这个警告信息:L'utilization d'XMLHttpRequestdefaçonssynchrononesur le fil d'exécutionprincipestobsolèteàinsde de sonimpactnégatifurla navigation de l'utilisateur final。

你有什么想法,我怎么能让它运作?一位朋友告诉我尝试“回调”,但我不知道它是如何运作的。

    getInfoFromDB: function() {
        var info;
        $.ajax({
            url: "./fonctions/ajax/members.php",
            type: "POST",
            dataType: 'html',
            success: function(data) {
                info = data;
            },
            async: false,

        });
        return info;
    }

1 个答案:

答案 0 :(得分:2)

您必须更改getInfoFromDB()以返回info以外的内容。例如,您可以改为return a Promise。如果您只返回$.ajax()的返回值,则会得到Promise - 类似于解析为data的内容。

getInfoFromDB: function() {
    return $.ajax({
        url: "./fonctions/ajax/members.php",
        type: "POST",
        dataType: 'html',
    });
}

但是,您必须更新调用getInfoFromDB()的所有地方以支持异步行为。例如:

myObject.getInfoFromDB().then(function (info) {
    doSomethingWith(info);
});

来自jQuery.ajax()的文档:

  

jQuery 1.5中$.ajax()返回的jqXHR对象实现了Promise接口,为它们提供了Promise的所有属性,方法和行为(有关详细信息,请参阅Deferred object)。