如何为全局变量赋值并在jquery/javascript中的其他函数中使用它?

如何为全局变量赋值并在jquery/javascript中的其他函数中使用它?,javascript,jquery,Javascript,Jquery,声明全局变量(jquery): 我将使用xml执行一些操作,然后将一些其他值分配给myVar,调用函数test()将再次更改myVar的值。然后我希望var的值必须与我在test()函数中更改的值相同 $(document).ready(function(){ //Some XML oprations $.get("students.xml",{},function(xml){ $.mynamespace.myVar="ewewew

声明全局变量(jquery):

我将使用xml执行一些操作,然后将一些其他值分配给myVar,调用函数test()将再次更改myVar的值。然后我希望var的值必须与我在test()函数中更改的值相同

    $(document).ready(function(){
        //Some XML oprations
        $.get("students.xml",{},function(xml){
            $.mynamespace.myVar="ewewewewewew";
            test();
        });
        //value of $.mynamespace.myVar must be test
        alert($.mynamespace.myVar);
     });

     function test(){
        alert($.mynamespace.myVar );
         $.mynamespace.myVar="test";
     }

您可以使用闭包而不是全局变量来做同样的事情

(function($){
  var myNs = {};

  $(document).ready(function(){ 

    //Some XML oprations
    $.get("students.xml",{async: false},function(xml){
        myNs.myVar="ewewewewewew";
        test();
    });
        //value of $.mynamespace.myVar must be test
        alert(myNs.myVar);
  });

     function test(){
        alert(myNs.myVar );
         myNs.myVar="test";
     }
})(jQuery);

您可以使用闭包而不是全局变量来做同样的事情

(function($){
  var myNs = {};

  $(document).ready(function(){ 

    //Some XML oprations
    $.get("students.xml",{async: false},function(xml){
        myNs.myVar="ewewewewewew";
        test();
    });
        //value of $.mynamespace.myVar must be test
        alert(myNs.myVar);
  });

     function test(){
        alert(myNs.myVar );
         myNs.myVar="test";
     }
})(jQuery);

Ajax代表异步的JavaScript和XML,这意味着调用是异步的。完成AJAX后,将调用successful函数。它可以随时调用。因此,当javascript到达代码时,它只需通过,当ajax准备就绪时,就会调用success函数

有两种解决方案

  • 当ajax请求在成功函数中完成时,可以使用变量执行某些操作
  • 在ajax代码之后使用变量做一些事情,但需要使用param
    async:false
    ,这使得ajax不再是ajax:),而是某种类型的SJAX

  • Ajax代表异步的JavaScript和XML,这意味着调用是异步的。完成AJAX后,将调用successful函数。它可以随时调用。因此,当javascript到达代码时,它只需通过,当ajax准备就绪时,就会调用success函数

    有两种解决方案

  • 当ajax请求在成功函数中完成时,可以使用变量执行某些操作
  • 在ajax代码之后使用变量做一些事情,但需要使用param
    async:false
    ,这使得ajax不再是ajax:),而是某种类型的SJAX

  • 可能的重复可能会尝试将此代码放在代码的顶部:var$.mynamespace={}
    $.get
    是异步的,问题不是变量是否为全局变量,而是在尝试使用变量时ajax调用尚未完成。“必须测试$.mynamespace.myVar的值”-它将在ajax请求完成后发出,但在此之前,警报(在调用后立即执行)将显示当前值。它是异步的,因此可以随时发出。这就是您应该在函数(xml)中使用此变量或使用属性Sync的原因,但当您使用Sync时,它就不再是AJAX了:)的可能重复项可能尝试将此代码放在代码的顶部:var$。mynamespace={}
    $。get
    是异步的,问题不在于该变量是否为全局变量,但是,当您尝试使用变量时,ajax调用尚未完成。“必须测试$.mynamespace.myVar的值”-这将在ajax请求完成后进行,但在此之前,警报(在调用后立即执行)将显示当前值。它是异步的,因此可以随时出现。这就是您应该在函数(xml)中使用此变量或使用属性Sync的原因,但当您使用Sync时,它就不再是AJAX了:)请注意,它不是“最佳”解决方案,您使用的是SJAX,而不是AJAX。请注意,它不是“最佳”解决方案,您使用的是SJAX,而不是AJAX。