我知道有关将XML加载到JS变量的问题已在此处多次发布,但我找不到可行的解决方案。在我的脚本中,我在ajax请求之前声明一个变量,然后将结果添加到变量中。这仅在我向脚本添加警报时才有效:
var myDB;
$.ajax({
type: 'GET',
url: 'db.xml',
dataType: 'xml',
success: function (xml){
myDB = xml;
}
});
alert(myDB); //returns: undefined
$(myDB).find('item').each(function (){
var question = $(this).find('question').text();
alert(question);
});
以上代码仅适用于警报。当我删除警报时,代码不起作用。如何在没有警报的情况下完成这项工作?
答案 0 :(得分:2)
您需要将代码添加到成功处理程序中:
var myDB;
$.ajax({
type: 'GET',
url: 'db.xml',
dataType: 'xml',
success: function (xml){
$(myDB).find('item').each(function (){
var question = $(this).find('question').text();
});
}
});
答案 1 :(得分:1)
ajax请求是异步的。这意味着,您在成功选项中提供的功能将在以后执行。
启动请求后,您的变量仍为空。只有等待足够长的时间来确认阻止警报,才会加载变量。
您需要将迭代添加到success函数中,其中xml数据当然可用。