Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Ajax 获取函数外部json请求的变量(jquery)_Ajax_Json_Jquery - Fatal编程技术网

Ajax 获取函数外部json请求的变量(jquery)

Ajax 获取函数外部json请求的变量(jquery),ajax,json,jquery,Ajax,Json,Jquery,问这个问题我觉得很愚蠢,但是我怎么能在函数外得到变量crdnts呢 $(function() { var coordinates = { LoadDefault: function() { $.getJSON('http://api.wipmania.com/jsonp?callback=?', '', function(json) { var crdnts = json.latitude + "," + json

问这个问题我觉得很愚蠢,但是我怎么能在函数外得到变量crdnts呢

$(function() {
    var coordinates = {
        LoadDefault: function() {
             $.getJSON('http://api.wipmania.com/jsonp?callback=?', '', function(json) {
                var crdnts = json.latitude + "," + json.longitude;
                //alert(crdnts);//this works
                return crdnts;
            });
        }
    };
    alert(coordinates.LoadDefault());//I would like to get the crdnts variable here.
});


你不能。Ajax调用是异步的,因此无法预测它何时返回

您唯一能做的就是在成功回调中使用它,或者如果它是一个选项(在本例中,所有JS执行都将等待请求完成)

例如,您可以在Ajax调用成功完成时调用函数:

$(function() {
    var coordinates = {
        LoadDefault: function() {
             $.getJSON('http://api.wipmania.com/jsonp?callback=?', '', function(json) {
                var crdnts = json.latitude + "," + json.longitude;
                callSomething(crdnts);
            });
        }
    };

    function callSomething(x) {
        alert(x);
    }
});

javascript ajax是异步的。因此,您需要使用回调:

$(function() {
    var coordinates = {
        LoadDefault: function() {
             $.getJSON('http://api.wipmania.com/jsonp?callback=?', '', function(json) {
                var crdnts = json.latitude + "," + json.longitude;
                call_alert(crdnts); //callback
            });
        }
    };
    function call_alert(cr){
         alert(cr);
    }
    coordinates.LoadDefault();
});

这是因为Ajax是异步的。通常的方法是将
警报()。我认为,由于异步的性质,这是不可能的,但我不知道如何做这个回调函数。