2012-01-13 76 views
0

我一定在做错事。我希望下面的代码可以更新和访问全局变量'gvar',但它不会。我在做什么错误?Javascript更新和访问变量功能

<script type="text/javascript"> 
    var gvar; 
    $(function() {      
     $(document).ready(function() { 
      $.getJSON("json.php", function (myData) { 
       $.each(myData.tag, function (t, myData) { 
        if(myData.myId != null) { 
         gvar = myData.myId; 
        } 
       }); 
       return false; 
      }) 
     }); 
    }); 
</script> 

<script type="text/javascript"> 
    alert(gvar); 
</script> 
+0

你有没有试过alert(gvar);功能外? – Dev 2012-01-13 11:47:15

+2

这是您的示例代码中的拼写错误吗?你确实提醒(myId),而不是提醒(gvar)。除此之外,它应该工作。 – Archer 2012-01-13 11:48:17

+0

是的,对不起,打字错误...应该是警惕(gvar)...仍然不会返回任何东西 – echez 2012-01-13 11:53:36

回答

3

gvar只在dom准备就绪后才被填充。但是,只要解析代码的一部分,就会执行警报。尝试在ready()函数的末尾放置警报。

@Yoshi有另一个好点我刚刚错过了:变量的人口甚至延迟,直到请求已成功执行。为了测试它,你可以设置几秒钟的超时时间,然后提醒变量。此时该请求应该已经结束,并且该变量将具有可以提醒的值。但是这只是为了测试变量是否在全局范围内工作,因为当在回调中提醒时,当然变量已经设置在警报的正上方。 ;)

+0

我有一个修复,但显然,我不能将代码作为答案发布,直到6小时后。无论如何,非常感谢你们! – echez 2012-01-13 12:47:01

+0

我的回答是否有帮助?也许你可以在简短的评论中描述你的解决方案。 – Connum 2012-01-13 13:18:02