javascript - 如何解析从 url 返回的 xml?

标签 javascript jquery ajax xml

我的 url 返回以下 xml:

<?xml version="1.0"?>
<categories>
  <category>
    <catid>17</catid>
    <name>Collage</name>
    <parent></parent>
  </category>
  <category>
    <catid>15</catid>
    <name>Letter Mats</name>
    <parent></parent>
  </category>
  <category>
    <catid>182</catid>
    <name>Single Opening</name>
    <parent></parent>
  </category>
</categories>

我的 javascript 代码是:

var matte_select_options = new Array();
function matte_designs_populate_types()
{
  $(document).ready(function()
  {
    $.ajax({
      type: "GET",
      url: "myurl/system/components/catsxml/3",
      dataType: 'xml',
      success: function(xml) {
        designs = xml.getElementsByTagName("categories")[0].childNodes;
        var output = [];
        alert(designs.length);
        for (i = 0; i < designs.length; i++)
        {
          var catid = designs[i].getAttribute("catid");
          var name = designs[i].getAttribute("name");
          output.push('<option value="'+ catid +'">'+ name +'</option>');
          matte_select_options[catid] = name;
        }

        $('#matte_designs').html(output.join(''));
      }
    });
  });
}

出于某种原因,警报给了我 7,但我不确定为什么。但主要问题是 select 没有填充,因为 catid 和 name 甚至没有设置。

最佳答案

您可以将返回的 XML 转换为 jQuery 对象,然后像平常一样使用 jQuery 的 DOM 遍历函数。试试这个:

success: function(xml) {
    var output = [];
    $('category', xml).each(function(i, el) {
        var catid = $("catid", this).text();
        var name = $("name", this).text();
        output.push($('<option />', { value: catid, text: name }));
        matte_select_options[catid] = name;
    });
    $('#matte_designs').html(output);
}

Example fiddle

关于javascript - 如何解析从 url 返回的 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19861720/

相关文章:

javascript - 使用jquery删除不同表中相同位置的行

javascript - 在 post 请求中发送文件

javascript - 如何根据单词的长度在一行中添加未知数量的点?

第二次提交时忽略 Javascript PreventDefault()

javascript - 如何遍历 JSON 数组?

jQuery 选择框替换

javascript - 用单引号引起来时,正则表达式不起作用

javascript - reader.readAsText 固定文件位置

jquery 获取/getJSON : call a function after *several* files load?

javascript - 环回 jQuery AJAX 请求