我正在使用jQuery $ .getJSON(..)来获取一些json。
传递的值显示“undefined”。
有办法吗?
getTopMenuJson : function(currentPage) {
if(currentPage == null) currentPage = 1;
var retJSON;
$.getJSON(
requestURLs.topMenuJson,
{
'ITEM_PER_PAGE' : TopMenuHandler.ITEM_PER_PAGE,
'CURRENT_PAGE' : currentPage
},
function(JSON) {
//alert(JSON); **<--This gives me result (Object)**
retJSON = JSON;
}
);
**alert(retJSON); //<!-- This doesn't, but Undefined**
},
答案 0 :(得分:1)
它没有,它不应该因为getJSON
在内部进行AJAX调用,AJAX中的第一个A
代表Asynchronous
,它只是意味着脚本执行赢了等到你的success
函数被调用。
您可以使用$.ajax
并将async: false
传递给其中一个选项,以确保您的脚本等待ajax调用完成,但请注意这样做会冻结浏览器/ tab直到你的AJAX调用结束。
$.ajax({
url: requestURLs.topMenuJson,
dataType: 'json',
data:
{
'ITEM_PER_PAGE' : TopMenuHandler.ITEM_PER_PAGE,
'CURRENT_PAGE' : currentPage
},
success: function(JSON) {
//alert(JSON); **<--This gives me result (Object)**
// this won't work without async:false
// as the execution of script won't wait until this function
// is finished
retJSON = JSON;
},
async: false
});
http://api.jquery.com/jQuery.ajax/
async默认值:true默认情况下,发送所有请求 异步(即默认设置为true)。如果你需要 同步请求,将此选项设置为false。跨域请求 和dataType:“jsonp”请求不支持同步操作。 请注意,同步请求可能会暂时锁定浏览器, 在请求处于活动状态时禁用任何操作。