4

Javaサーブレットまたはアクションからajaxによって取得するjQueryを使用して一部のデータを解析しようとしています。これは私の最悪の週です、すべてがバナナになります。これが私のXML応答です。

<ajax-response>
    <response>
        <item>
            <name>ok</name>
            <value>true</value>
        </item>
        <item>
            <name>menuDiv</name>
            <value> Some HTML Menu</value>
        </item>
    </response>
</ajax-response>

そして、「SomeHTML」である「menuDiv」値だけを取得しようとしています。

$.ajax({
    type: "GET",
    url: basePath+'mostrarMenu.do',
    dataType: "xml",
    success: parseXml
});

function parseXml (xml) {
    var menu = $(xml).find("item");
    menu.each(function(i, value) {
        alert(value[0]);
        if (value == 'menuDiv') {
            alert("Esto es el menudiv:"+value);
        }

        if (( value != null ) || ( value != '') || ( value != ' ')) {
            $('#menuDiv').append(value);
        } 
        else 
            alert ("anda el else");
    });

alert(value[0]);そしてif ( value == 'menuDiv') {何も返しません。最後ifはメニューを表示しますが、他のアイテムも同様trueです。たとえば、ハンサムなメニューの前に単語が表示されます。

任意のヘルプや推奨事項をいただければ幸いです。ありがとう。

編集2:

この関数を使用すると、プレーンテキスト(HTMLでレンダリングされない)とすべての「<items>」を取得できます。

function parseXml (xml) {
        var menu = $(xml).find("item");
        menu.each(function(i, value){
            if(( value != null ) || ( value != '') || ( value != ' ')){
                $('#menuDiv').append($(value));
            } else alert ("anda el else");
        });
     }
    }

dataType:'html'を変更しましたが、メニューは表示されていますが、XMLですべてではなく1つのアイテムだけを選択しようとしています...

4

1 に答える 1

1

最初の問題は、 を実行するとfind("item")、サブツリー全体が返されることです。

    <item>
        <name>ok</name>
        <value>true</value>
    </item>

したがって、ループを次のように変更する必要があります。

if ($(value).find("name")[0].innerHTML == 'menuDiv') {
    alert("Esto es el menudiv:"+value);
}

次に、値「Some HTML Menu」を取得できますvalue.find("value")[0].innerHTML

ここではエラー チェックを行っていません (具体的にはfind、少なくとも 1 つの要素を含む null 以外の配列が返されると想定しています) が、独自に追加することができます。

于 2012-05-15T15:37:02.767 に答える