Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数看不到JSON对象(java脚本、jQuery)_Javascript_Jquery_Json - Fatal编程技术网

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);
});