Extjs4.1,存储同步后检索响应消息
Posted
技术标签:
【中文标题】Extjs4.1,存储同步后检索响应消息【英文标题】:Extjs4.1, Retrieve response message after store sync 【发布时间】:2012-08-09 13:03:04 【问题描述】:如何在失败函数中获取响应消息?
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);
那么,
【问题讨论】:
如果你得到console.log( response )
,你会得到什么? console.log( response.message )
会给什么?您确定响应文本包含成功的对象,还是结果本身?
@Izhaki 我将 console.log(response) 结果视图添加到我的问题中,请您查看我的问题吗?并且没有 response.message。
嗯,你看到的是Ext.data.batch
,所以没有回应。请参阅我的答案以获得解决方案。
其实你能不能把response
改成batch
然后试试:console.log(batch.operations[0].response.result);
【参考方案1】:
我不确定您是否曾经想过这一点,但我很确定上面的建议是错误的。需要查看 store 代理的请求异常。
这是在进行存储同步之前要调用的一些代码。
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。
【讨论】:
【参考方案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"]);
);
【讨论】:
【参考方案3】:总而言之,所有这些答案都是不正确或低效的。
-
可以使用Ext.Ajax.on,但您必须担心请求的竞争条件。不要使用此解决方案,因为它很容易使您陷入困境。 Ext.Ajax.on 可能会因为同步以外的原因而被解雇。见展览 a。
batch.operations[0].response.responseText 也可以使用,但这不是获取响应的可靠方式,因为“响应”对象不会总是被填充(这取决于请求以及是否有异常, 404, 500, 成功:假等)
展示一个
// 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
);
当前解决方案
这仍然没有我正在寻找的响应,但是嗯。
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 等)修改我的帖子
【讨论】:
以上是关于Extjs4.1,存储同步后检索响应消息的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 extjs4.1 中解析没有根对象的 json 响应
ExtJS 4.1 - 检索嵌套 JSON 的 hasOne 信息