0

さて、この問題は私を怒らせています。この点については知識が不足していると思います。

XML応答を解析しようとしていますが、すべて問題ありませんが、オブジェクトにアクセスしようとすると問題が発生します。私はそれらを配列のように扱い、常に「未定義」を受け取ります。

<?xml version="1.0" encoding="UTF-8" ?>
  <ajax-response>
   <response>
    <item>
      <name><![CDATA[ok]]></name>
      <value><![CDATA[true]]></value>
    </item>
    <item>
      <name><![CDATA[menuDiv]]></name>
      <value><![CDATA[Some HTML value]]></value>
    </item>
   </response>
  </ajax-response>

そしてここにJqueryコードがあります:

xmlDoc = $.parseXML( xml ),
        $xml = $( xmlDoc ),
        $item = $xml.find( "item" );
        alert($item.length);
        $item.each(function(key, value){ 
            alert(typeof value);     
        });

この行alert(typeof value);は「オブジェクト」を返します。ただし、そうするvalue[0]$value[0]、「未定義」を返す場合。

オブジェクトから「いくつかのHTML値」を取得したいと思います。

4

1 に答える 1

2

反復関数に渡されるvalueオブジェクトは XML DOM ノードになり、この場合Elementはタグ name が付きますitem。したがって、そこから属性を取得するか、それが持つ子のテキストを調べることで、そこから情報を取得しますTextNode

要素を jQuery インスタンスでラップし、jQuery を使用attrして属性textを取得し、テキストを取得できます。

オブジェクトから「何らかの HTML 値」を取得したいと考えています。

それはtext--ここに例があります:

$item.each(function(key, value){ 
    var $value = $(value);
    alert(typeof $value.text());
});

それぞれの子をループする完全な例を次に示しitemます。ソース

jQuery(function($) {

  var xml =
      '<?xml version="1.0" encoding="UTF-8" ?>' +
      '<ajax-response>' +
          '<response>' +
              '<item>' +
                  '<name><![CDATA[ok]]></name>' +
                  '<value><![CDATA[true]]></value>' +
              '</item>' +
              '<item>' +
                  '<name><![CDATA[menuDiv]]></name>' +
                  '<value><![CDATA[Some HTML value]]></value>' +
              '</item>' +
          '</response>' +
      '</ajax-response>';

  var xmlDoc = $.parseXML( xml ),
      $xml = $( xmlDoc ),
      $item = $xml.find( "item" );
  display($item.length);
  $item.each(function(key, value){ 
    $(value).children().each(function(clave, valor) {
      display("$(valor).text() = " + $(valor).text());
    });
  });

  function display(msg) {
    $("<p>").html(msg).appendTo(document.body);
  }
});

または、 text を含む のvalue兄弟であるを取得したいだけの場合、関連するビットは次のとおりです。name"menuDiv"

var menuDivText = $xml.find("item name:contains(menuDiv)").next().text();

実例| ソース

于 2012-05-16T13:28:03.247 に答える