首页 > 解决方案 > 如何在进一步执行代码之前等待 ajax 响应?

问题描述

我有下一个函数返回 AJAX 响应或默认false值:

function getResults() {
    // get json object from the database
    var json = false // default value
    var data = new FormData()
    var xhr = new XMLHttpRequest()
    xhr.open('POST', "php/get_survey_results.php", true)
    xhr.onload = function(){
        var jsonString = this.responseText
        json = JSON.parse(decodeURIComponent(jsonString))
        return json
    };
    xhr.send(data); 
    return json
}

function foo() {
    var data = getResults() // returns false, because AJAX responce gets later
    // processing data...
}

AJAX 响应将在 +- 300 毫秒后出现,这就是getResults返回 false 的原因。我希望它等到 AJAX 响应将被获取或等待几秒钟,然后再返回 false,如果不是结果获取。我该怎么做?

我需要默认值,因为如果我删除它 - 下一个代码foo将被执行,但data变量将为空

标签: javascriptajax

解决方案


推荐阅读