Javascript 在jquery请求中编辑全局变量

Javascript 在jquery请求中编辑全局变量,javascript,jquery,Javascript,Jquery,我使用JQUERY解析XML文件,同时将其写入多个数组。现在我最大的麻烦是将数组的结果传递到脚本之外 <script type="text/javascript"> //.... var ProjectList = new Array(); var N = 0; var ID = []; var A = []; $.get("urlaub.xml", function(GetList) { $(GetList).find("u").each(function() {

我使用JQUERY解析XML文件,同时将其写入多个数组。现在我最大的麻烦是将数组的结果传递到脚本之外

<script type="text/javascript">
//....
var ProjectList = new Array();

var N = 0;
var ID = [];
var A = [];


$.get("urlaub.xml", function(GetList) {

    $(GetList).find("u").each(function() {

        var $U = $(this);
        ID.push($U.attr("id"));
        $(this).A.push($U.find("A").text());


        N++;

    });

    alert(N); //not 0!        
});

alert(N); //allways 0
// ......​​​    
</script>

//....
var ProjectList=新数组();
var N=0;
var ID=[];
var A=[];
$.get(“urlaub.xml”,函数(GetList){
$(GetList).find(“u”).each(function(){
var$U=$(本);
ID.push($U.attr(“ID”));
$(this.A.push($U.find(“A”).text());
N++;
});
警告(N);//不是0!
});
警报(N)//始终0
// ......​​​    
因此,我需要找到一种方法,使数组和变量N可以从外部访问,但我做不到


提前感谢。

您的代码已经在编辑全局文件,您只是没有等待足够长的时间来使用它们。比如说,

//....
var ProjectList = [];

var N = 0;
var ID = [];
var A = [];


var getRequest = $.get("urlaub.xml", function(GetList) {

    $(GetList).find("u").each(function() {

        var $U = $(this);
        ID.push($U.attr("id"));
        $(this).A.push($U.find("A").text()); // what is .A? *confused*


        N++;

    });


});

getRequest.done(function(){
    alert(N); //not 0!  
});

alert(N); //always correctly 0 because we haven't received xml yet
// ......​​​  

在请求完成之前,外部作用域不会也不会访问该数据。将所有需要该数据的代码放在回调函数中,
$。获取
。使用var ProjectList=[];不是新数组();您还可以使用
返回N
+
pipe()
而不是
done()
,后者可能会更好一些(并完全删除全局
N