我尝试加载xml文件并将一些信息保存到数组中。但我总是得到错误:Uncaught TypeError:无法读取属性" 0"未定义的。 提前感谢您的帮助。
var myArray = [[]]
jQuery.ajax({
url: '../xml/someXml.xml',
type:'GET',
dataType: 'xml',
success: function(data) {
// Extract relevant data from XML
var xml = $.parseXML(data);
var $xml = $(xml);
var $piece = $xml.find("piece");
$piece.each(function() {
var t = [];
var attr1 = $(this).find("attr1").text();
var attr2 = $(this).find("attr2").text();
var attr3 = $(this).find("attr3").text();
t.push(attr1);
t.push(attr2);
t.push(attr3);
myArray.push(t);
})
}
});
alert(myArray[0][0]);
答案 0 :(得分:1)
eisbehr 可能是正确的,这可能是与Ajax的异步性有关的问题(参见wikipedia ajax)。您不能假定success方法的执行时间和jquery.ajax函数调用返回的时间之间的任何顺序。这依赖于ajax调用数据的所有操作必须在成功回调函数中启动。
通常,ajax用于从Web服务器检索远程文档或数据,这可能需要一些时间。异步性是一种允许浏览器和脚本在等待请求的数据时继续处理的方法。
尝试将alert(myArray[0][0]);
语句移动到成功回调函数中,看看会发生什么。
如果这不起作用,数据解析可能会有另一个问题,您可以使用浏览器的javascript调试器来查看是否在成功回调函数中获得了预期的结果。请参阅https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Set_a_breakpoint以获取相关帮助。