1

我有一家商店,我想sync()用服务器。

Store.sync()方法有successfailure属性函数,它们有Ext.data.Batchoptions作为参数。

如果我从服务器收到这样的响应:

{
  success: false,
  msg: "test error!"
}

failure方法调用。

如何msgfailure方法内访问响应属性?

4

2 回答 2

6
    store.sync({
        failure: function(batch, options) {
            alert(batch.proxy.getReader().jsonData.msg);
        }
    });
于 2013-04-16T12:22:54.277 回答
2

Store.sync() 方法具有成功和失败属性函数,它们具有 Ext.data.Batch 和选项作为参数。

batch.exceptions数组内收集的任何失败操作。它有你需要的一切。只需通过失败的操作,处理它们。

操作失败消息(“测试错误!”)将在里面 - operation.error

store.sync({
    failure: function(batch, options) {
        Ext.each(batch.exceptions, function(operation) {
            if (operation.hasException()) {
                Ext.log.warn('error message: ' + operation.error);
            }
        });
    }
});

代理在processResponse方法中设置它:

operation.setException(result.message);

在哪里:

  • Operation 的setException方法设置其error属性(出现错误消息)。
  • resultExt.data.ResultSet并且result.messageif 由代理的阅读器填充,使用阅读器的messageProperty

但是,默认情况下 reader 的 message 属性是messageProperty: 'message'. 在您的情况下,您应该使用正确的 messageProperty 配置阅读器,例如:

reader: {
    ...
    messageProperty: 'msg'
}

metadata或从带有配置属性的服务器响应返回,例如:

{
    "success": false,
    "msg": "test error!", 
    "metaData": {
        ...
        "messageProperty": 'msg'
    }
}

Json 阅读器 - 响应元数据(文档部分)

于 2014-07-03T21:40:00.320 回答