1

我有一个带有 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

4 回答 4

8

这是最终的解决方案:

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

});

谢谢大家的帮助!!

于 2013-04-16T08:38:34.630 回答
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!' ) } );
    });

});
于 2013-04-15T17:17:00.127 回答
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();
    });
});
于 2013-04-15T17:15:24.893 回答
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;
    }

这对我有用......

于 2014-04-10T12:01:05.213 回答