1

This is not the first time I am working with ajax and such, I want to use the jQuery function $.getJSON

I have written the following:

var newIMG;

function random_img(){
    $.getJSON('content/random.php',function (data){
        newIMG = data;
    })      
    alert(newIMG.ERROR);
}

But for some reason I can't access the newIMG variable after the JSON request has been made. Passing it from the $.getJSON function to the random_img() function in some way would be fine as well (better, actually)

It's really strange and I can't figure out what's the problem here.

https://i.sstatic.net/OShao.jpg Screenshot of the firebug console, may explain it better.

Thanks in advance guys.

1
  • You are also missing a ; after the }) Commented Apr 9, 2011 at 17:51

2 Answers 2

6

It's because you're trying to alert before the JSON request has come back (getJSON is asynchronous) so when it first attempts to alert it, it is undefined.

Move the alert into the callback as such:

$.getJSON('content/random.php',function (data){
  newIMG = data;
  alert(newIMG.ERROR);
});     
Sign up to request clarification or add additional context in comments.

Comments

5

Your call to $.getJSON is asynchronous, which means that alert(newIMG.ERROR) will be evaluated before the Ajax call has returned a value. You need to place the alert call inside the callback:

var newIMG;

function random_img(){
  $.getJSON('content/random.php',function (data){
    newIMG = data;
    alert(newIMG.ERROR);
  });      
}

1 Comment

Gosh, why didn't I think of that :L Well, thanks anyway, kind sir

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.