从getJSON函数返回值

时间:2013-04-15 17:12:37

标签: javascript jquery getjson

我有一个带有jquery getJSON的函数,我需要返回结果值(在其他地方使用它)

以下是代码:

function getval(){
jQuery.getJSON('http://data.mtgox.com/api/1/BTCUSD/ticker?callback=?', function(data) {
    // We can't use .return because return is a JavaScript keyword.
    return data['return'].avg.value;
});
}

$(function () {
    $(document).ready(function() {
    alert (getval());
    });

});

这不起作用:(

我知道我可以从getJSON函数中调用外部函数,其值如下:

    jQuery.getJSON('http://data.mtgox.com/api/1/BTCUSD/ticker?callback=?', function(data) {
        // We can't use return because return is a JavaScript keyword.
       mysecondfunction(data['return'].avg.value);
    });
function mysecondfunction(value){
//use the value
}

但是我必须从另一个函数调用 json 函数,因为json返回一个动态值,我需要使用它。

我希望它清楚......

非常感谢!!

4 个答案:

答案 0 :(得分:7)

以下是最终解决方案:

function getval( callback ){
    jQuery.getJSON('http://data.mtgox.com/api/1/BTCUSD/ticker', function(data) {
        // We can't use .return because return is a JavaScript keyword.
        callback(data['return'].avg.value);
    });
}

$(function () {
        $(document).ready(function() {
        getval( function ( value ) { 
            alert( 'Do something with ' + value + ' here!' );
        } );
    });

});

感谢大家的帮助!!

答案 1 :(得分:3)

您可以尝试使用callback功能:

function getval( callback ){
    jQuery.getJSON('http://data.mtgox.com/api/1/BTCUSD/ticker?callback=?', function(data) {
        // We can't use .return because return is a JavaScript keyword.
        callback(data['return'].avg.value);
    });
}

$(function () {
        $(document).ready(function() {
        getval( function ( value ) { alert( 'Do something with ' + value + ' here!' ) } );
    });

});

答案 2 :(得分:1)

Ajax调用是异步的,所以你不能让getVal()函数返回一些东西。无论您需要对结果做什么,都必须在回调函数内部进行。

function getval() {
    jQuery.getJSON('http://data.mtgox.com/api/1/BTCUSD/ticker?callback=?', function(data) {
        // You have to use "data" here
        alert(data['return'].avg.value);
    });
}

$(function () {
    $(document).ready(function() {
        getval();
    });
});

答案 3 :(得分:1)

getJSON异步调用,所以返回取消发现

因此您需要使用此args asnyc:false

触发ajax调用传递

例如:

    function getCountrycodeJson(obj) {
     var code="";
        $.ajax({
         async: false,
          dataType : 'json',
         url: "url",
         type : 'GET',
         success: function(data) {
         for(var i in data){ 
//here do your logic and assign value for code varable   

          }
           }
      }});

        return code;
    }

这对我有用.....