【问题标题】:How to get Xml data by using ajax如何使用ajax获取xml数据
【发布时间】:2017-05-10 13:45:10
【问题描述】:

我正在尝试通过使用 ajax 调用来获取我的 xml 数据。但是我在result.responseXML 中只获得了根节点值数据。无法访问 ITEM 标记数据。

我的 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>

这是我正在尝试的。

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

在 responseXML 中,我收到了&lt;ROOT UN="ABC" Total="28" &gt;&lt;/ROOT&gt;

谁能帮助我我做错了什么以及如何纠正它。如何获取项目标签。

【问题讨论】:

  • 不是所有的 xml 标签和属性名都是小写的吗?为什么属性名称、等号和值之间有空格?
  • 首先,在开发者工具 (F12) 的 Network 选项卡中查看响应,看看实际响应是什么。
  • @evolutionxbox 不。标签大小写正确。
  • @ScottMarcus 是的,我检查了这个。有时会出现 400 错误
  • @evolutionxbox XML 区分大小写,但用户可以自行确定元素和属性的大小写。此外,额外的空格是完全有效的。

标签: javascript ajax xml extjs


【解决方案1】:

在 Ext js 中,读取 xml 数据的最佳方式是使用 store。

  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

【讨论】:

  • 感谢您的回答。我可以使用阅读器而不是字段一个问题。
  • 我得到 Uncaught TypeError: b[(d.xtype || e)] is not a constructor error 也使用new Ext.data.Store j.on is not a function error
  • 在 Ext js 中,你应该使用 Ext.create('classname') 而不是 new 关键字。您还可以在视图中使用商店,例如,通过使用“商店”配置属性。
  • 阅读器是什么意思?在上面的示例中,“fields”用于定义字段和属性,XML reader 用于从代理读取数据并将其放入存储中。您还可以创建模型并使用模型而不是字段。 docs.sencha.com/extjs/6.2.0/classic/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 2020-05-01
  • 1970-01-01
  • 2011-11-07
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多