【问题标题】:How to parse an xml ajax reply with jQuery?如何使用 jQuery 解析 xml ajax 回复?
【发布时间】:2009-08-13 21:23:05
【问题描述】:

在 jQuery 中使用 ajax POST 请求,我从服务器返回以下 xml:

<?xml version="1.0"?>
<data>

  <subject>
    <val1>...</val1>
    <val2>...</val2>
    <val3>...</val3>
  </subject>

  <subject>
    <val1>...</val1>
    <val2>...</val2>
    <val3>...</val3>
  </subject>

  ... 

</data>

xml 将有任意数量的&lt;subject&gt; 标签。如何遍历每个主题标签,在每次迭代中获取 val1..val3 中对应标签的数据?谢谢。

【问题讨论】:

    标签: javascript jquery xml


    【解决方案1】:

    确保您的服务器响应发送"text/xml""Content-Type" 标头。然后响应将是解析的 xml 文档。您的成功处理程序只需迭代生成的 DOM:

    $.post(url, postData, function(xmlDoc) {
        $('subject', xmlDoc).each(function() {
            var val1 = $('val1', this).text();
            var val2 = $('val2', this).text();
            var val3 = $('val3', this).text();
        })
    });
    

    【讨论】:

    • 我试过这个,它适用于恰好有来自数据库的 varchar 数据的 val#。但是当我尝试弹出 $('val#', this).text(); 时,具有文本类型数据(mySql)的 val 标记显示为空白。任何想法为什么会这样?
    • 没关系,我很愚蠢,对于我实际使用的 val# 标签之一 我猜这就是为什么它没有获取值..只是改变换个名字就行了..谢谢
    【解决方案2】:

    使用 DOM 方法:

    var subjects = xml.getElementsByTagName("subject");
    for(i in subjects){
      alert(subjects[i].getElementByTagName("val1").textContent;
      alert(subjects[i].getElementByTagName("val2").textContent;
      alert(subjects[i].getElementByTagName("val3").textContent;
    }
    

    【讨论】:

      【解决方案3】:

      我现在找不到语法,但是您可以像使用 html 一样使用选择器查询对象,例如:

      $.get('your/url', function(response) {
        $(response).contents("subject"); // just like it's HTML
      });
      

      【讨论】:

        猜你喜欢
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        • 2011-10-23
        • 1970-01-01
        • 1970-01-01
        • 2016-01-17
        • 2014-02-08
        • 1970-01-01
        相关资源
        最近更新 更多