jQuery - 无法访问$ .get响应数据

时间:2013-07-23 14:51:13

标签: jquery json get scope

我有这段代码:

function retrieve_districts(){

var json='';

$.get("http://localhost/aaa/districts.php",function(result, textStatus) {       
    if(textStatus=="success"){
        json=JSON.parse(JSON.stringify(result)); (alert works fine here)
    }
}, "json");

alert(json);

}

但警报是空的,我该怎么办?非常感谢你

3 个答案:

答案 0 :(得分:1)

警告你的json,不会在代码的底部工作。在Ajax调用完成之前,不会填充json变量,因此警报在if语句中可以正常工作。

您可以在if语句中放置一个回调方法,并在Ajax查询完成后再调用它。

答案 1 :(得分:0)

欢迎来到异步编程的精彩世界!

你必须在回调函数中移动alert

你可能会推动你的代码表现得像同步一样,但我不推荐它,你总会发现自己在努力反对设计。

答案 2 :(得分:0)

警报为空,因为执行警报时json的值为''

AJAX在设计上是异步的。因此,虽然它在技术上可能它可能在其后的另一行代码之前完成(虽然在这个例子中非常不可能),但它不是保证。当一个AJAX请求启动时,它会继续在另一个线程中,其余的内联代码会立即继续,而无需等待AJAX​​请求完成。

因此,为了响应您的AJAX请求,您需要在回调函数中执行此操作:

function retrieve_districts(){

    var json='';

    $.get("http://localhost/aaa/districts.php",function(result, textStatus) {       
        if(textStatus=="success"){
            json=JSON.parse(JSON.stringify(result));
            alert(json);
        }
    }, "json");
}

传递给get()函数的函数是回调函数,将在AJAX请求完成后执行。