我有以下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。不确定这里发生了什么。
答案 0 :(得分:1)
对$.getJSON()
的调用是异步的。当请求完成时,将执行您传递的功能。但是,其余代码会立即进行评估。因此,您的GetUniversity()
函数不会产生返回值,您可以使用。
要解决此问题,您有两个选择:
$.ajax
并在选项中设置async: false
。这将保留JavaScript的执行,直到请求完成。但要小心,因为这意味着在此期间您的整个页面都无法使用!$.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 );