【问题标题】:How to get xml parse data to a global variable in jquery如何将xml解析数据获取到jquery中的全局变量
【发布时间】:2012-07-30 06:46:12
【问题描述】:

这是我读取“test.xml”的jquery代码。

var htmldata = 0;
$.get('test.xml', function(data) {
    xml_data = $(data);
    xml_data.find("order").find("customer").each(function(k, v) {
        divClass = inactiveClass;
        spanClass = inactiveIcon;
        htmldata += '<div class="' + divClass + '"><span class="' + inactiveIcon + '"></span>' + $(this).text() + '</div>';
    });
});
alert(htmldata);

在这段代码中,我尝试解析 test.xml 并创建一个 htmldata。但我没有把这些数据拿出来。如果我试图提醒它显示为空。我怎样才能把这个价值带到外面。请帮帮我。

【问题讨论】:

  • 我认为 alert(htmldata );将显示 0,因为代码执行不等待请求 [实际上从 test.xml 检索数据] 完成。
  • 正如@OptimusPrime 所说,您的ajax 请求是异步的。将警报放在$.get 的函数回调中。
  • @OptimusPrime 确实完全跳过了我。尽管昨天有一个问题。
  • 您好,我创建了一个单独的函数来解析该数据。 var xml_htmldata = $.myorder.parseXMLdata(uniqueId,options);警报(xml_html数据);现在它也给出了未定义的消息。
  • 忘记我说的话(我会删除它,抱歉让您感到困惑)阅读@OptimusPrime 的评论,这可能会为您提供一些解释stackoverflow.com/questions/11688171/…

标签: javascript jquery xml parsing


【解决方案1】:
function parseXMLdata(data, callback)
{    
    $.get('test.xml', function(data) {
        xml_data = $(data);
        xml_data.find("order").find("customer").each(function(k, v) {
            divClass = inactiveClass;
            spanClass = inactiveIcon;
            var htmldata += '<div class="' + divClass + '"><span class="' + inactiveIcon + '"></span>' + $(this).text() + '</div>';

            callback(htmldata);    
        });
    });
}

parseXMLdata(data, window.alert);

【讨论】:

  • 嗨,我怎样才能将该警报值分配给一个变量
  • 我需要这样的 var stat = parseXMLdata(data, window.alert);
  • 不可能同步。你只能做 parseXMLData(data, function(html){yourVariable = html});分配将是异步的。
  • 正确的方法是将 parseXMLData 后面的所有内容放在另一个函数体中,该函数体接受一个参数并将函数名称作为第二个参数传递给 papreXMLData 代替 window.alert。这里我的意思是,在 AJAX 调用之后必须执行的事情。
  • 如果您花一些时间学习 JS、回调、侦听器等中的异步编程,它将为您带来丰厚的回报。乱搞只会让你更加沮丧。
猜你喜欢
  • 2022-09-28
  • 1970-01-01
  • 2012-05-22
  • 2013-01-28
  • 1970-01-01
  • 2017-09-16
  • 2019-02-08
  • 1970-01-01
  • 2023-01-29
相关资源
最近更新 更多