1

声明全局变量(jquery):

 $.mynamespace = {  myVar : "something" }; 

我将使用 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";
     }
4

2 回答 2

1

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

有2个解决方案。

  1. 当 ajax 请求在成功的函数中完成时,你用变量做一些事情
  2. 您在 ajax 代码之后使用变量执行某些操作,但您需要使用async: false使 Ajax NO ajax :) 但某种SJAX的参数。
于 2013-07-18T07:09:49.220 回答
0

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

(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);
于 2013-07-18T07:06:54.930 回答