如何在jquery get方法中更改全局变量?

时间:2018-02-27 09:52:45

标签: javascript jquery get xmlhttprequest return

我不是js的新手,但jquery get方法有一个愚蠢的问题,它无法改变全局变量,我不知道为什么?

function getData(data) {
    re=null;
    $.get("http://example.com/api.php",{ d:data}).done(function(result){

            re = true;

        }).fail(function(){

            re = false;

        });
        console.log(re);
        return re;
}

如果您看到console它仍然是null! 有什么想法吗?

更新:

我的问题不在于console.log(),实际问题是我无法存储和返回这样的值:

alert(getData(data));

这仍然返回null。

1 个答案:

答案 0 :(得分:1)

这是因为$ .get是一个异步调用,当 re 变量重新分配一个新值时,console.log正在执行。

调用异步函数getData(data)时可以使用回调函数。

function getData(data,callback) {
$.get("http://example.com/api.php",{ d:data}).done(function(result){

        callback(true)

    }).fail(function(){

        callback(false);

    });
}
//call it with your data and callback function
getData(data, function(response){
     console.log(response); // this will contain true or false as returned from your getData function.
})

我希望这会有所帮助。