我知道关于将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);
});
上面的代码只适用于警报。当我删除警报时,代码不起作用。在没有警报的情况下,我如何使其工作?
发布于 2012-04-13 13:03:36
ajax请求是异步的。这意味着,您在成功选项中给出的函数稍后会被执行。
启动请求后,您的变量仍然为空。只有当您等待足够长的时间确认阻塞警报时,变量才会被加载。
您将需要将迭代添加到成功函数中,其中xml数据肯定是可用的。
发布于 2012-04-13 13:02:42
为此,您需要将代码添加到成功处理程序中:
var myDB;
$.ajax({
type: 'GET',
url: 'db.xml',
dataType: 'xml',
success: function (xml){
$(myDB).find('item').each(function (){
var question = $(this).find('question').text();
});
}
});
https://stackoverflow.com/questions/10141320
复制相似问题