1

I have a function with jquery getJSON and i need the return the result value back (to Use it somewhere else)

Here is the code:

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

});

This is doesn't work :(

i know i can call external function from inside the getJSON function with the value like:

    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
}

But i have to call the json function from another function because json return a dynamic value and i need to use it.

I hope it clear...

Thank you very much!!

3

4 Answers 4

9

Here is the final solution:

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

});

Thanks everyone for your help!!

Sign up to request clarification or add additional context in comments.

Comments

3

You might try using a callback function:

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

});

4 Comments

Hi! just a small question.. when i use: "alert (getval( function ( value ) { alert( 'Do something here!' ) } ));" i get "undefined" can you see why?? Thank you very much!
@EranLevi - I think Kevin didn't mean for that first "alert" to be there. The line should be more like this: getVal(function(value) { alert('value is: ' + value); }.
Thank you! you probably meant to write: getVal(function(value) { alert('value is: ' + value); }); but the page is blank now :( can you see anything else?? Thanks man!
@KevinBoucher - Hello and thank you!! i still can't see what is wrong in this simple code: link Thank you!
1

Ajax calls are asynchronous, so you can't have the getVal() function return something. Whatever you need to do with the result, you have to do it in inside the callback function.

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

4 Comments

You right, but what if i need to refresh (get) the json call again and again? (json array values changing dynamically!) thank you!
@EranLevi Then send the request again.
first.. Thanks! now, i can't send the request beause im calling from function No.1 to Function No.2, now here i cant call Function No.1 again (because it will call Func.No.2... :)... ) i really need to use the return value somehow in function No.2..
@EranLevi - You will have to move some of the code from the the one function to the other so it is inside the ajax callback function. I'd have to see the functions to comment further.
1

Hi getJSON asynchronous call so its return undefind

so you need to fire ajax call pass with this args asnyc:false

Ex:

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

this is working for me.....

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.