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

Javascript 使用jQuery将XML加载到JS变量中而不使用JS警报,javascript,jquery,xml,Javascript,Jquery,Xml,我知道关于将XML加载到JS变量的问题已经在这里发布了很多次,但我没有找到一个可行的解决方案。在我的脚本中,我在ajax请求之前声明了一个变量,然后将结果添加到变量中。仅当我向脚本添加警报时,此操作才有效: var myDB; $.ajax({ type: 'GET', url: 'db.xml', dataType: 'xml', success: function (xml){ myDB = xml; } }); alert(myDB

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

上述代码仅适用于警报。当我删除警报时,代码不起作用。在没有警报的情况下,我如何使其工作?

您需要将代码添加到成功处理程序中,以便执行此操作:

var myDB;
$.ajax({
    type: 'GET',
    url: 'db.xml',
    dataType: 'xml',
    success: function (xml){
        $(myDB).find('item').each(function (){
            var question = $(this).find('question').text();
        });
    }
});

为此,您需要将代码添加到成功处理程序中:

var myDB;
$.ajax({
    type: 'GET',
    url: 'db.xml',
    dataType: 'xml',
    success: function (xml){
        $(myDB).find('item').each(function (){
            var question = $(this).find('question').text();
        });
    }
});

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

启动请求后,您的变量仍然为空。只有等待足够长的时间确认阻塞警报,变量才会被加载


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

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

启动请求后,您的变量仍然为空。只有等待足够长的时间确认阻塞警报,变量才会被加载

您需要将迭代添加到success函数中,其中xml数据肯定是可用的