json函数不返回数据

时间:2013-02-02 13:03:53

标签: jquery json

我有以下Javascript功能:

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但由于某种原因它是null。不确定这里发生了什么。

1 个答案:

答案 0 :(得分:1)

$.getJSON()的调用是异步的。当请求完成时,将执行您传递的功能。但是,其余代码会立即进行评估。因此,您的GetUniversity()函数不会产生返回值,您可以使用。

要解决此问题,您有两个选择:

  1. (更糟糕)请改用$.ajax并在选项中设置async: false。这将保留JavaScript的执行,直到请求完成。但要小心,因为这意味着在此期间您的整个页面都无法使用!
  2. (更好)将所有相关功能传递到$.getJSON的回调中。它将在请求完成后执行,其余的代码/页面在此期间也能正常工作。
  3. 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 );