2013-02-02 123 views
0

我有以下的JavaScript函數:JSON功能不返回數據

function GetUniversity() 
{  
    $.getJSON(AddressAccess+"Home/university/format/json", 
     function(data) 
     { 
      data = data[0]; 
      return data; 
     }); 
} 

現在我當我在數據VAR肯定是否從url返回數據的功能測試數據。現在,這裏是我的,我調用這個函數代碼:

$(document).on('pagebeforeshow','#searchpage', 
        function() 
        { 
         var UniveristyDat = null; 
         UniveristyData = GetUniversity(); 
         alert(UniveristyData.Name); 
         var out = ''; 
         for(i in UniveristyData) 
         { 
          out+= i + ' ' + UniveristyData[i] + "\n"; 
         } 
         alert(out); 

        } 
      ); 

現在,在理論上UniveristyData VAR應該有contense返回,但由於某種原因,它的空。不確定這裏發生了什麼。

回答

1

$.getJSON()的調用是異步的。你傳遞它的函數將在請求完成時執行。然而,其餘的代碼將立即進行評估。因此您的GetUniversity()函數不會返回任何值,您可以使用。

爲了解決這個問題,你有2種選擇:

  1. (較差)使用$.ajax代替,並在選項中設置async: false。這將持續執行JavaScript,直到請求完成。但是,請小心,因爲這意味着您的整個頁面在此期間無法使用!
  2. (更好)將所有相關功能傳遞到$.getJSON的回調中。當請求完成時,它將被執行,並且代碼/頁面的其餘部分將在此期間正常工作。

 

function GetUniversity() 
{  
    $.getJSON(AddressAccess+"Home/university/format/json", 
     function(data) 
     { 
      var UniveristyData = data[0]; 
      alert(UniveristyData.Name); 
      var out = ''; 
      for(i in UniveristyData) { 
       out+= i + ' ' + UniveristyData[i] + "\n"; 
      } 
      alert(out); 
     }); 
} 

$(document).on('pagebeforeshow','#searchpage', GetUniversity);