Javascript 在jquery请求中编辑全局变量
我使用JQUERY解析XML文件,同时将其写入多个数组。现在我最大的麻烦是将数组的结果传递到脚本之外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() {
<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
)