【问题标题】:Error on XML response of a form submit in ExtJS 5ExtJS 5中表单提交的XML响应错误
【发布时间】:2014-10-22 13:00:31
【问题描述】:

我目前正在将表单升级到 ExtJS 5。 它应该向以 XML 响应的 Web 服务发送请求。由于 ExtJS 默认需要 JSON,所以我根据文档设置了一个自定义的 errorReader:

errorReader: new Ext.data.XmlReader({
    record: 'error',
    success: '@success'
    }, [
        'id', 'msg'
    ]
)

服务器的原始响应是:

HTTP/1.0 200 OK
Content-Type: text/xml
Content-Length: 150
Expires: Mon, 20 Oct 2014 10:00:53 GMT

<?xml version="1.0" encoding="Windows-1252"?>
<message success="false"><errors><error><id>-1</id><msg>FieldMissing</msg></error></errors></message>

收到响应后,我在页面中看到如下错误(翻译自德语):

Error: Property "scheme" can not be obtained from an undefined or null referenced object
Row: 48503
Source: ext-all-debug.js

它发生在执行以下操作的“extractData”函数中:

entityType = readOptions && readOptions.model ? Ext.data.schema.Schema.lookupEntity(readOptions.model) : me.getModel(),
schema = entityType.schema,

readOptions 是未定义的,所以 me.getModel() 会返回未定义,尽管我在 errorReader 中定义了一个带有 id 和 msg 的模型。然后 entityType 未定义导致上述错误。

我不明白,我做错了什么。请帮忙。在此先感谢:)

【问题讨论】:

    标签: javascript xml forms extjs response


    【解决方案1】:

    最好的问题是我自己能回答的问题;) 似乎文档有误,或者当前实现中存在错误。 文档所说的只是行不通:

    errorReader: new Ext.data.reader.Xml({
        record : 'field',
        success: '@success'
    }, [
        'id', 'msg'
    ])
    

    您必须明确(不是匿名)定义一个合适的模型:

    Ext.define('Field', {
        extend: 'Ext.data.Model',
        fields: ['id', 'msg']
    });
    

    ...然后以如下形式赋值:

    errorReader: new Ext.data.reader.Xml({
        record : 'field',
        model: 'Field',
        success: '@success'
    })
    

    但似乎还有另一个问题.. 设置成功属性根本不起作用!我可以写 'foo',它仍然默认为 'success',这意味着它总是期望 root 的孩子而不是 root 的属性。

    【讨论】:

      猜你喜欢
      • 2012-08-10
      • 1970-01-01
      • 2013-12-27
      • 2017-07-09
      • 2013-02-02
      • 2015-08-26
      • 1970-01-01
      • 2020-07-27
      • 2022-01-06
      相关资源
      最近更新 更多