0

こんにちは、私はjQueryの初心者で、XMLファイルからhtmlファイルにデータを取得するのに役立つAjax関数を開発しようとしています。次のコードは私のコードです

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).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 に答える