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

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

こんにちはgetJSON非同期呼び出しなので、その戻り値は未定義です

したがって、この引数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 に答える
1

getVal()Ajax 呼び出しは非同期であるため、関数から何かを返すことはできません。結果を処理する必要がある場合は、コールバック関数内で行う必要があります。

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 に答える