如何将AJAX响应传递给javascript变量?

时间:2016-04-28 08:33:30

标签: javascript jquery json ajax

我想将成功的AJAX响应传递给一个javascript变量,基本上是在内容加载之后,我最终可能会在其他函数中使用它。我有这个代码有效:

var json; // Variable with Global Scope

$.ajax({
    type: "GET",
    url: "http://127.0.0.1:8888/...",
    dataType: "JSON",
    async: false,
    success: function (response) {

        json = JSON.parse(response.value1); // value1 as in {"value1":1234} from the url.

        console.log("Json Parse Data 1: " + json);

    }
});

console.log("Json Parse Data 2: " + json);

根据我的研究,不推荐使用async: false,因为它会冻结浏览器加载,直到AJAX请求完成。因此,替代方案如下:

function getValue(callback){ 

    var json;

    $.ajax({
        type: "GET",
        url: "http://127.0.0.1:8888/...",
        dataType: "JSON",
        success: function (response) {

            var json = JSON.parse(response.value1);

            console.log("Json Parse Data 1: " + json);

            callback(json);

        }
    });
}

function on_Complete(json) { // When request is complete, do this

    console.log("Json Parse Data 2: " + json);

}

getValue(on_Complete); // Here I call the second function to do console.log("Json Parse Data 2: " + json)

这非常接近,但我想用第二个代码实现的是将var json;作为回调传递,并在请求成功后将其值返回给第二个函数而不是console.log("Json Parse Data 2: " + json) 。有些人认为:

function on_Complete(json) {

    var result = json;

    return result; // Or directly return json;

}

var value1 = getValue(on_Complete); // Making this variable equal to json returned in on_Complete(json)

console.log("Json Parse Data 2: " + value1);

我错过了什么?

0 个答案:

没有答案