如何从Store.sync()上的服务器获取响应消息

时间:2013-04-16 11:08:20

标签: json extjs

我有一个商店,我想sync()与服务器。

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

如果我从服务器得到这样的回复:

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

failure方法调用。

如何从msg方法中访问回复failure属性?

2 个答案:

答案 0 :(得分:5)

    store.sync({
        failure: function(batch, options) {
            alert(batch.proxy.getReader().jsonData.msg);
        }
    });

答案 1 :(得分:2)

  

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

收集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);

其中:

  • 操作setException方法设置其error属性(错误消息)。
  • resultExt.data.ResultSetresult.message由代理的读者填写,使用读者messageProperty

但是,默认情况下,读者的消息属性为messageProperty: 'message'。 在您的情况下,您应该为阅读器配置正确的messageProperty,例如:

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

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

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

Json reader - Response MetaData (docs section)