2013-10-23 39 views
0
$.getJSON("../../index.php/churchlocator/base", function(data) { 
    base_url = data.base; 
}); 
alert(base_url); 

如何在上面的代碼中獲取base_url以便在getJSON var之外訪問?在jQuery語句之外訪問javascript變量

+1

嘗試在$ .getJSON上面聲明var base_url – iJade

+0

嘿michael發佈了一個答案 – iJade

+0

可能重複[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to- return-the-an-ajax-call) – bfavaretto

回答

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調用返回的唯一方法是將代碼放入成功處理程序中,以便對返回的數據進行操作,或者通過調用該成功處理程序中的函數並將其傳遞給數據。

這是異步編程,如果您使用任何類型的異步功能編程,您必須使用此模型。您不能使用傳統的順序編程與異步函數調用。

+0

如何在我的腳本的其他部分訪問base_url? –

+0

@MichaelGrigsby - 請閱讀我已添加到我的答案。您必須編寫異步代碼。你不能使用傳統的同步編程。 – jfriend00

+0

非常多,包括我的回調中使用base_url的所有東西? –