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

时间:2011-04-09 17:46:19

标签: javascript

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

我写了以下内容:

var newIMG;

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

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

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

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

先谢谢你们。

2 个答案:

答案 0 :(得分:6)

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

将警报移动到回调中:

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

答案 1 :(得分:5)

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

var newIMG;

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