2017-05-10 17 views
0

ajax呼び出しを使用してxmlデータを取得しようとしています。しかし、私はresult.responseXMLにROOT Nodeの値のデータしか得ていません。 ITEMタグデータにアクセスできません。ajaxを使用してXmlデータを取得する方法

マイXML。

<ROOT UN="ABC" Total="28"> 
    <ITEM Val = "1" data = "name1" /> 
    <ITEM Val = "2" data = "name2" /> 
    <ITEM Val = "3" data = "name3" /> 
    <ITEM Val = "4" data = "name4" /> 
    <ITEM Val = "5" data = "name5" /> 
</ROOT> 

ここに私が挑戦しているものがあります。 responseXMLで

Ext.Ajax.request({ 
     url : url, 
     method: 'GET', 
     success: function (result, request) 
      { 
       debugger; 
       result.responseXML 
      } 
    }); 

誰もが私が間違っているとどのようにそれをcoorrectことになっているものを私を助けることができる私は<ROOT UN="ABC" Total="28" ></ROOT>

を取得しています。アイテムタグを取得する方法。

+0

は、すべてのXMLタグではなく、小文字であることを意味し属性名?属性名、等号、値の間にスペースがあるのはなぜですか? – evolutionxbox

+0

まず、開発者ツール(F12)の[ネットワーク]タブのレスポンスを見て、実際のレスポンスの内容を確認します。 –

+0

@evolutionxboxいいえ。タグの場合は正しいです。 – David

答えて

3

Ext jsでは、xmlデータを読み取る最善の方法は、ストアを使用することです。

  1. ストアを作成し、フィールドを定義します(マッピングプロパティ(@Val)は、これが子要素ではなく属性であることを示すために使用されます)。
  2. ajaxプロキシを使用してデータをロードします。
  3. xmlリーダーを使用してデータを読み取ります。 Ext js 6では、ルート要素の名前と取得する要素の名前を定義します。
  4. ストアをロードし、最初の要素の値をコンソールに表示します。

var itemStore = Ext.create('Ext.data.Store', { 
    fields: [{name: 'val', mapping: '@Val'}, 
     {name: 'data', mapping: '@data'}], 
    proxy: { 
     type: 'ajax', 
     url: 'data1.xml', 
     method: 'GET', 
     reader: { 
      type: 'xml', 
      record: 'ITEM', 
      rootProperty: 'ROOT' 
     } 
    } 
}); 

itemStore.load(function(records, operation, success) { 
    var item1 = itemStore.first(); 
    console.log("First item " + item1.get('val')); 
}); 

ここでフィドルを確認してください:https://fiddle.sencha.com/#view/editor&fiddle/1vd6

+0

お返事ありがとうございます。フィールドの代わりに1つの質問は、私はリーダーを使用することができます。 – David

+0

私はUncaught TypeErrorを取得しています:b [(d.xtype || e)]も 'new Ext.data.Store'を使ってコンストラクタエラーではありませんj.onは関数エラーではありません – David

+0

Ext jsでは、新しいキーワードの代わりにExt.create( 'classname')を使用します。たとえば、ストアの設定プロパティを使用して、ビュー内でストアを使用することもできます。 –

関連する問題