2012-11-19 77 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