0

我知道有关将 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);
});

上面的代码仅适用于警报。当我删除警报时,代码不起作用。我怎样才能在没有警报的情况下完成这项工作?

4

2 回答 2

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();
        });
    }
});
于 2012-04-13T13:02:41.840 回答
1

ajax 请求是异步的。这意味着,您在成功选项中提供的功能将在稍后执行。

在你开始请求之后,你的变量仍然是空的。仅当您等待足够长的时间以确认阻塞警报时,变量才会被加载。

您需要将迭代添加到成功函数,其中 xml 数据肯定可用。

于 2012-04-13T13:03:36.303 回答