1
好的,所以我似乎無法在通過ajax之後更改systemPath的全局變量。它將在ajax中工作,但我需要更新ajax之外的變量。基本上我試圖從XML創建一個路徑數組,並使用它們來查找其他可以從中生成表的XML文件。全局變量不會從AJAX成功內的函數更新
有人知道這裏發生了什麼嗎? ajax是否在變量設置之前運行,這就是爲什麼我在ajax之後得到數組長度爲0的原因?
var systemPath = new Array();
var techDigestArr = new Array();
var addToArray = function(thisarray, toPush){
thisarray.push(toPush);
}
$.ajax({
url: fullPath+"technical/systems/systems.xml",
dataType: ($.browser.msie) ? "text" : "xml",
success: function(data){
var xml;
if (typeof data == "string") {
xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
xml.loadXML(data);
} else {
xml = data;
}
$(xml).find("system").each(function(){
var urlString = fullPath + "technical/system_" + $(this).attr("id") + "/" + $(this).attr("id") + "tech-digest.xml <br />";
//alert(urlString);
$("#td-articles").append(systemPath.length + urlString);
addToArray(systemPath,urlString);
//systemPath.push(urlString);
});
$("#msg-output").append("total - " +systemPath.length);//Returns 48
},//END SUCCSESS
error: function(){
alert("Sorry - ");
history.go(-1);
}
});//END AJAX CALL
$(document).ready(function(){
//$("#msg-output").append("total - " + systemPath.length); Returns 0
});
那麼,這將是項存放到AJAX生成的,然後是一個數組的最佳方式能夠在頁面中稍後使用它們? – 2011-05-16 20:40:55
理想情況下,您應該只從成功回調中訪問它們。但是,如果您需要通過用戶交互訪問它們(如點擊),您可以像現在這樣在全局範圍內保存它們(請注意,用戶可能會點擊太快,即在收到數據之前)。爲了解決這個問題,你只能在收到數據時設置點擊處理程序,並且在此之前鏈接不做任何動作... – 2011-05-16 20:50:32
這是[jsFiddle示例](http://jsfiddle.net/danmana/y6XgY/)你的情況,所以你可以更好地理解流程 – 2011-05-16 20:51:07