Javascript 函数看不到JSON对象(java脚本、jQuery)
此函数看不到“数据” 这项工作:Javascript 函数看不到JSON对象(java脚本、jQuery),javascript,jquery,json,Javascript,Jquery,Json,此函数看不到“数据” 这项工作: function MakeAlert(){ data = json('action.php'); window.alert(data.name); } 这是因为数据是异步的。它发送请求并立即返回。一旦服务器响应(可能是几秒钟后),它就会调用success回调,这就是为什么数据只能在此回调中访问的原因 如果要阻止调用方,可以发送一个同步请求(请注意,这可能会在执行请求时冻结UI,这会破坏AJAX的全部用途): 您不能在此处使用retu
function MakeAlert(){
data = json('action.php');
window.alert(data.name);
}
这是因为数据是异步的。它发送请求并立即返回。一旦服务器响应(可能是几秒钟后),它就会调用success
回调,这就是为什么数据只能在此回调中访问的原因
如果要阻止调用方,可以发送一个同步请求(请注意,这可能会在执行请求时冻结UI,这会破坏AJAX的全部用途):
您不能在此处使用return
。您将返回data
to匿名闭包函数
最好的方法是使用回调函数
,在执行getJSON
success处理程序时应应用该函数
function json (url){
$.getJSON(url, function(data) {
return data;
})
}
用法
function json (url, cb){
$.getJSON(url, function(data) {
cb.apply(null, [data]);
})
}
function json(url) {
var result = null;
$.ajax({
url: url,
async: false,
dataType: 'json',
success: function(data) {
result = data;
}
});
return result;
}
function json (url){
$.getJSON(url, function(data) {
return data;
})
}
function json (url, cb){
$.getJSON(url, function(data) {
cb.apply(null, [data]);
})
}
json('action.php', function(data){
alert(data);
});