AJAX / Jquery XML解析

时间:2012-04-19 07:57:20

标签: xml ajax jquery xml-parsing

我尝试解析以下类型的XML(来自 getMembers.php 的数据):

<?xml version="1.0" encoding="ISO-8859-1"?>
<members>
   <id>3422345</id>
   <name>Bill Gates</name>
   <id>232311</id>
   <name>Bob Barker</name>
</members>

我使用下面的代码来解析它:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            type: "GET",
            url: "getMembers.php",
            cache: false,
            dataType: "xml",
            success: function(xml) {
                $(xml).find('members').each(function(){
                    var name = $(this).find("name").text()
                    alert(name);
                });
            }
        });
    });
</script>

没有错误,但我同时得到两个名字。

像:

  

Bill GatesBob Barker&lt; - 第一个循环&gt;

而不是

  

Bill Gates&lt; - first loop&gt;

     

Bob Barker&lt; - 第二个循环&gt;

任何帮助都会很棒!

3 个答案:

答案 0 :(得分:31)

我认为你迭代成员,而不是名字:

success: function(xml) {
                $(xml).find('members').each(function(){
                    $(this).find("name").each(function(){
                        var name = $(this).text();
                        alert(name);
                    });
                });
            }

或许你的XML应该是这样的:

<members>
   <id>3422345</id>
   <name>Bill Gates</name>
</members>
<members>
   <id>232311</id>
   <name>Bob Barker</name>
</members>

答案 1 :(得分:2)

这种方式显示名称:

<script type="text/javascript">
$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "getMembers.php",
        cache: false,
        dataType: "xml",
        success: function(xml) {
            $(xml).find('name').each(function(){
                        var name = $(this).text();
                        alert(name);
            });
        }
    });
});

答案 2 :(得分:0)

只是想知道您是否成功解析了该XML数据。

有效的XML格式如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<members>
  <member>
   <id>3422345</id>
   <name>Bill Gates</name>
  </member>
  <member>
   <id>232311</id>
   <name>Bob Barker</name>
 </member>
</members>