Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数外部的Javascript更新和访问变量_Javascript_Jquery_Json_Function_Variables - Fatal编程技术网

函数外部的Javascript更新和访问变量

函数外部的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) {

我一定是做错了什么。我希望下面的代码能够更新并访问全局变量“gvar”,但事实并非如此。请问我做错了什么

<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小时后才能发布代码作为答案。无论如何,非常感谢大家!