2012-11-19 18 views
1

我正在使用JQUERY来解析一个XML文件,而在此处我正在写入多重数组。现在我的麻烦是将脚本数组的结果传递给数组。在jQuery请求中编辑全局变量

<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> 

所以,我需要找到一种方法,使数组和变量N从外部访问,并在即时通讯失败。

在此先感谢。

+8

直到请求完成之后,外部范围才会访问该数据并且不会访问该数据。将所有需要这些数据的代码放在回调函数中''.get'。 –

+0

use var ProjectList = [];不是新的Array(); – Geuis

回答

0

你的代码已经在编辑全局变量,你只是没有等待足够长的时间来使用它们。例如,

//.... 
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 
// ......​​​ 
+1

你也可以使用'return N;'+'pipe()'而不是'done()',这可能会更好一些(并且根本不需要全局'N') – zerkms