函数外部的Javascript更新和访问变量
我一定是做错了什么。我希望下面的代码能够更新并访问全局变量“gvar”,但事实并非如此。请问我做错了什么函数外部的Javascript更新和访问变量,javascript,jquery,json,function,variables,Javascript,Jquery,Json,Function,Variables,我一定是做错了什么。我希望下面的代码能够更新并访问全局变量“gvar”,但事实并非如此。请问我做错了什么 <script type="text/javascript"> var gvar; $(function () { $(document).ready(function () { $.getJSON("json.php", function (myData) {
<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>
var-gvar;
$(函数(){
$(文档).ready(函数(){
$.getJSON(“json.php”,函数(myData){
$.each(myData.tag,函数(t,myData){
如果(myData.myId!=null){
gvar=myData.myId;
}
});
返回false;
})
});
});
警报(gvar);
gvar
仅在dom准备就绪时才填充。但是,该警报会在解析该部分代码后立即执行。尝试将警报置于ready()
函数的末尾
@Yoshi还有一个我刚刚错过的优点:变量的填充甚至会延迟到请求成功执行为止。要测试它,可以将超时设置为几秒钟,然后向变量发出警报。到那时,请求应该已经结束,并且变量将有一个可以发出警报的值。但这只是为了测试变量是否在全局范围内工作,因为在回调内部发出警报时,当然变量已设置在警报的正上方。;) 只有在dom准备就绪时才会填充gvar。但是,该警报会在解析该部分代码后立即执行。尝试将警报置于
ready()
函数的末尾
@Yoshi还有一个我刚刚错过的优点:变量的填充甚至会延迟到请求成功执行为止。要测试它,可以将超时设置为几秒钟,然后向变量发出警报。到那时,请求应该已经结束,并且变量将有一个可以发出警报的值。但这只是为了测试变量是否在全局范围内工作,因为在回调内部发出警报时,当然变量已设置在警报的正上方。;) 您是否尝试过警报(gvar);函数之外?这是示例代码中的输入错误吗?您确实发出警报(myId),而不是警报(gvar)。除此之外,它应该是有效的。是的,对不起,打字错误。。。应保持警惕(gvar)。。。仍然不会返回任何内容,尽管您正在提醒
gvar
,但它可能没有填写为$。getJSON
是异步的。您是否尝试过提醒(gvar);函数之外?这是示例代码中的输入错误吗?您确实发出警报(myId),而不是警报(gvar)。除此之外,它应该是有效的。是的,对不起,打字错误。。。应保持警惕(gvar)。。。仍然不会返回任何内容,尽管您正在提醒gvar
,但它可能未作为$填充。getJSON
是异步的。我有一个修复程序,但显然,我要到6小时后才能将代码作为答案发布。无论如何,非常感谢大家!我有一个解决方案,但显然,我要到6小时后才能发布代码作为答案。无论如何,非常感谢大家!