【问题标题】:EXTJS4 XML Store - DisplayingEXTJS4 XML 存储 - 显示
【发布时间】:2012-05-25 10:07:46
【问题描述】:

我有一个 Perl 脚本,它向我的 EXTJS4 返回一个 XML 格式的 SOAP 请求。这是加载和显示 XML 的代码(这是我第一次使用 EXTJS):

Ext.onReady(function() {  
Ext.Loader.setConfig({enabled:true});

    Ext.define('accounts', {     
        extend: 'Ext.data.Model',
        fields: [
            {name: 'name', type: 'string'},
            {name: 'origin', type: 'string'}
            ]
    }); 

    var myStore = Ext.create('Ext.data.Store', {
        model: 'accounts',
        proxy: {
            type: 'ajax',
            url: 'cgi-bin/runPerl.pl',
            reader: {
                type: 'xml',
                root: 'soap:Body'
            }
        },
        autoLoad: true
    });

     myStore.on('load', function(store, records, options) {

        var tpl = new Ext.XTemplate(
            '<tpl for="Accounts">',
            '<h1>{values.data.name}</h1>',
            '<h1>{values.data.origin}</h1>',
            '</tpl>'
        );

        //tpl.append(Ext.get("output"), store.getRange());

    });

这是 XML:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:getAccountsResponse xmlns:ns2="http://services.nms.nimsoft.com/">
<Accounts>
<accountId>1</accountId>
<address></address>
<city></city>
<country></country>
<creationDate>2012-04-11T00:00:00+01:00</creationDate>
<description></description>
<fax></fax>
<name>Network</name>
<origin>Support_4</origin>
<phone></phone>
<postalCode></postalCode>
<state></state>
<webSite></webSite>
</Accounts>
</ns2:getAccountsResponse>
</soap:Body>
</soap:Envelope>

Firebug 显示以下内容:

Ext.DomQuery.pseudos[name] is not a function
[Break On This Error] 

return Ext.DomQuery.pseudos[name](cs, value);

我已将其缩小到 tpl 部分,但我一生无法理解我遇到的错误。

有人可以提供建议吗?谢谢!

【问题讨论】:

  • 为什么不尝试在负载处理程序中调试records 看看里面有什么?
  • 对此有什么建议吗?就像我说的那样,我对此很陌生。 @sha
  • 在你做tpl = 之前,添加行console.log(records)。这样,您将在调试控制台中看到记录数组。在那里,您可以浏览它们并查看它们的字段和其他所有内容。也许它会给你一些提示。
  • @sha 感谢您的回复,但我认为代码甚至没有那么远。什么都没有显示。我在 firbug 中看到返回了 XML,但我认为我的 sytax 不适合以某种方式将其加载到商店中。如果我说根是 'soap:Body' 我上面的错误。如果我说“帐户” - 路径未定义 - 'var paths = path.split(","),'
  • 看我的回答。根据文档 - 您需要指定“记录”属性

标签: javascript xml extjs extjs4


【解决方案1】:

尝试将您的阅读器定义更改为:

reader: {
    type: 'xml',
    // root: 'soap:Body',
    record: 'Accounts'
}

【讨论】:

  • 非常感谢您的帮助,我现在正在开发我的第一个 EXTJS 应用程序并且到目前为止喜欢这些框架!
猜你喜欢
  • 2012-06-05
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多