2011-08-12 74 views
2

可能重複:
How to return value from $.getJSON

 function get_url(){ 
      var returnValue = null; 
      $.getJSON('http://127.0.0.1:1337/?callback=?&command=get_url', "", function(data){ 
       data = $.parseJSON(data); 
       returnValue = data[0].get_url; 
       console.log(returnValue); // "not_null" 

      }); 
      console.log(returnValue); // "null" 
      return returnValue; 
     } 

爲什麼函數不返回 「NOT_NULL」?

回答

3

$.getJSON的調用是異步的,並且在您的get_url函數返回之前不會完成。 returnValue將不會返回值。

您需要通過使用$.ajaxasync:false而不是$.getJSON或者以異步方式處理返回值,修改調用邏輯以使其不會馬上指望它同步。

$.getJSON 

僅僅是速記到$就一個電話,這樣你就可以做到這一點,而不是:

$.ajax({ 
    url: url, 
    dataType: 'json', 
    data: data, 
    async: false, 
    success: callback 
}); 
+0

我怎樣才能返回「NOT_NULL」? – ExyTab

+0

將您的調用轉換爲$ .getJSON,以調用帶有async:false的$ .ajax。然後,您的成功功能中的代碼就可以工作。 –

+0

不要工作。 function get_url(){ \t var returnValue = null; \t $阿賈克斯({ \t \t網址: 'http://127.0.0.1:1337/?callback=?&command=get_url', \t \t數據類型: 'JSON', \t \t異步:假, \t \t成功:功能(數據){ \t \t \t數據= $ .parseJSON(數據); \t \t \t的console.log(數據[0] .get_url); \t \t \t的returnValue =數據[0] .get_url; \t \t \t} \t}); \t console.log(returnValue); \t return returnValue; } – ExyTab