使用jQuery将XML加载到JS变量中而不使用JS警报

时间:2012-04-13 13:00:40

标签: javascript jquery xml

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

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

2 个答案:

答案 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数据当然可用。