无法从函数内部访问全局变量?(JavaScript的)

Coo*_*ter 1 javascript

这不是我第一次使用ajax等,我想使用jQuery函数$ .getJSON

我写了以下内容:

var newIMG;

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

但由于某些原因,我在JSON请求发出后无法访问newIMG变量.以某种方式将它从$ .getJSON函数传递给random_img()函数也可以(更好,实际上)

这真的很奇怪,我无法弄清楚这里有什么问题.

http://i.stack.imgur.com/OShao.jpg firebug控制台的屏幕截图,可以更好地解释一下.

先谢谢你们.

EMM*_*ICH 6

这是因为您在JSON请求返回之前尝试发出警报(getJSON是异步的)所以当它第一次尝试提醒它时,它是未定义的.

将警报移动到回调中:

$.getJSON('content/random.php',function (data){
  newIMG = data;
  alert(newIMG.ERROR);
});     
Run Code Online (Sandbox Code Playgroud)


Gar*_*ers 5

您对$ .getJSON的调用是异步的,这意味着alert(newIMG.ERROR)将在Ajax调用返回值之前对其进行评估.您需要在回调中放置警报调用:

var newIMG;

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