0

你好朋友我是 jQuery 的新手,正在尝试开发一个 Ajax 函数来帮助我从 XML 文件获取数据到我的 html 文件下面是我的代码

HTML

<div id="myDiv"></div> <button>Get info</button>

XML更新*

    <?xml version="1.0" encoding="utf-8"?>
<main><person>
    <name>Bhupesh</name>
    <last>Lohani</last>
</person>
<person>
<name>Kamal</name>
<last>Sandhu</last>
</person>

<person>
<name>Ravi</name>
<last>Kumar</last>
</person></main>

脚本已更新*

    $(document).ready(function(e) {
   $("button").click(function(){
               var htmlStr = '';
               $.ajax({
                       type:'get',
                       url:"xml.xml",
                       cache: false,
                       dataType: "xml",
                       success:function(result){                          
                               var main = $(result).find('main');
                               $(main).each(function( index ) {
                                   var person = $(this).find('person')
                                       var name = $(person).find('name').text();
                                       var lastName = $(person).find('last').text();
                                       //console.log(name + ' | ' + lastName);
                                       htmlStr += '<p><b>' + name + '</b> - ' + lastName + '</p><br/>';
                               });
                               $("#myDiv").append(htmlStr);
                       }});
       });
});

当我点击我的按钮时它没有显示任何东西请帮助我

更新

朋友我对我的代码做了很少的修改,现在它就像

BhupeshKamalRavi - LohaniSandhuKumar

我希望每个名字和姓氏都应该显示为

Bhupesh - Lohani
Kamal - Snadhu
Ravi - Kumar

请帮助我的朋友

提前致谢..:)

4

1 回答 1

1

检查 htmlStr 变量的范围。它仅在每个回调方法中。您需要在每个回调范围之外定义它。可以在主变量下定义它。

var main= ... ;
var htmlStr = ''; 

根据您更新的请求。我看到你不是在迭代人,你只是在迭代'main'。$(main).find('person') 将导致将两个 person 元素都分配给 'person' 变量。随后, $(person).find('name') 导致从两个 person 元素中获取名字。

您可以通过遍历 person 来快速解决这个问题。

        var main = $(result).find('main');
        var htmlStr = '';

        $('person', main).each(function (index) {
            var person = $(this);
            var name = $(person).find('name').text();
            var lastName = $(person).find('last').text();
            console.log(name + ' | ' + lastName);
            htmlStr += '<p><b>' + name + '</b> - ' + lastName + '</p><br/>';
        });
        $("#myDiv").append(htmlStr);
于 2013-02-27T09:51:17.533 回答