0
$.getJSON("../../index.php/churchlocator/base", function(data) {
    base_url = data.base;
}); 
alert(base_url);

如何让上述代码中的 base_url 可以在 getJSON var 之外访问?

4

1 回答 1

2

这里的正确答案是将所有引用 ajax 调用结果的代码放在 ajax 调用的成功处理程序中。不要为此使用全局变量:

$.getJSON("../../index.php/churchlocator/base", function(data) {
    var base_url = data.base;
    alert(base_url);
    // or you may call some other function here and pass it the data
    myFunction(base_url);
}); 

Ajax 调用是“异步的”(这就是 Ajax 中的 A 所代表的意思)。这意味着它们将在未来某个时间完成,而您的其他 javascript 将继续运行。当他们完成时,他们将调用他们的成功处理程序。因此,您可以知道何时从 Ajax 调用返回数据的唯一方法是将代码放在成功处理程序中以对返回的数据进行操作,或者从该成功处理程序调用函数并将数据传递给它。

这是异步编程,如果您使用任何类型的异步功能进行编程,您必须使用此模型。您不能将传统的顺序编程与异步函数调用一起使用。

于 2013-10-23T03:22:17.930 回答