Extjs4.1,在存储同步后检索响应消息

时间:2012-08-09 13:03:05

标签: extjs4.1

如何在失败功能中检索响应消息?

store.sync({
 success : function(){},
 failure : function(response, options){
   console.log(response.responseText); //it does not work, because there is responseText attr in response
 }  
});

响应文字是这样的,

{"success":false,"message":"Test Error"}

有人知道,请指教。

由于

[编辑]

console.log(response); 

然后,

enter image description here

3 个答案:

答案 0 :(得分:6)

我不确定你是否想过这个,但上面的建议我很确定是错的。您需要查看商店代理的请求异常。

以下是在进行商店同步之前要调用的一些代码。

Ext.Ajax.on('requestexception', function (conn, response, options) {

  if (response.status != 200) {
    var errorData = Ext.JSON.decode(response.responseText);
    Ext.Msg.alert('Creating User Failed',errorData.message);
  }

});

很抱歉挖掘这个旧帖子,但是因为我刚刚经历了同样的斗争,所以看到上面的答案真的很痛苦。

HTH的。

答案 1 :(得分:2)

以下是您的需求:

store.sync({
    success: function(batch) {
        Ext.Msg.alert('Success!', 'Changes saved successfully.');
    },
    failure: function(batch) {
        Ext.Msg.alert("Failed", batch.operations[0].request.scope.reader.jsonData["message"]);
    }
});

答案 2 :(得分:2)

所有这些答案的长短都不正确或效率低下。

  1. 可以使用Ext.Ajax.on,但您必须担心请求的竞争条件。不要使用此解决方案,因为它可以轻松陷阱。 Ext.Ajax.on可能会因同步以外的其他内容而被解雇。见展览a。
  2. batch.operations [0] .response.responseText也可以使用,但这不是获取响应的可靠方法,因为“响应”对象不会总是被填充(这取决于请求和是否有例外) ,404,500,成功:假等。)
  3. 展示

        // This picked up my autocomplete comboboxes load - not what I wanted!
        Ext.Ajax.on({
            requestcomplete: {
                fn: callback,
                scope: this,
                single: true
            },
            requestexecption: {
                fn: callback,
                scope: this,
                single: true
            }
        });
    

    当前解决方案

    这仍然没有我想要的回复,但是meh。

        store.sync({
            failure: function (batch, eOpts) {
                // 'this' is the Ext.data.proxy.Ajax object
                // or whatever proxy you are using
                var data = this.getReader().jsonData,
                    raw_data = this.getReader().rawData;
            }
        });
    

    我不确定这是如何处理我的完整异常堆栈的情况,但我会根据我发现的服务器端异常修改我的帖子(404,500等)