Session Ext数据会话和错误的服务器响应(“W]忽略服务器记录:…”)
我们的应用程序在客户端处理和管理记录更改。我们使用ExtJS5机制 会话跟踪需要更新、创建或销毁的记录 在服务器上。它还可以命令这些操作,以确保 已创建的记录正确引用其他新创建的记录 他们的新的、服务器分配的id 让我介绍一下简短的用例。 用户打开并填写表单。场景后面的字段绑定到由会话跟踪的实体对象。当用户单击Submit时,会话被同步,即Ext向服务器发送请求并解析响应。这里我遇到了一个问题 服务器返回以下对象,但Ext无法识别它:Session Ext数据会话和错误的服务器响应(“W]忽略服务器记录:…”),session,extjs,extjs5,Session,Extjs,Extjs5,我们的应用程序在客户端处理和管理记录更改。我们使用ExtJS5机制 会话跟踪需要更新、创建或销毁的记录 在服务器上。它还可以命令这些操作,以确保 已创建的记录正确引用其他新创建的记录 他们的新的、服务器分配的id 让我介绍一下简短的用例。 用户打开并填写表单。场景后面的字段绑定到由会话跟踪的实体对象。当用户单击Submit时,会话被同步,即Ext向服务器发送请求并解析响应。这里我遇到了一个问题 服务器返回以下对象,但Ext无法识别它: [{"success": false, errorMessa
[{"success": false, errorMessage: "error"}]
分机打印警告:
[W] Ignoring server record: {"success":false}
或
我的问题是应该如何看待服务器响应以表明后端不接受/保存记录?
打印上述警告的源代码:(在函数doProcess
中)
下面是我如何启动批处理操作(同步会话)的代码段:
更新日期2014年9月26日
Sencha开发者建议在响应中包含对象的id。因此,我将服务器响应修改为:
[{"id": 10, "success": false}]
但这并不能解决问题。我花了一些时间调试Ext.data.operation.operation.doProcess方法,并分析了sencha支持中的示例代码。最终我找到了解决办法 这是我的代理配置:
proxy: {
type: 'rest',
// ...
reader: {
type: 'json',
rootProperty: 'data',
totalProperty: 'totalCount',
successProperty: 'success',
messageProperty: 'errorMessage'
}
}
发生错误时的服务器响应:
{
"success": false,
"errorMessage": "<error message>"
}
使用更改的记录数据创建或更新记录的扩展表单:
{
"success": true,
"data": [{
clientId: 5, // clientIdProperty
id: 5,
// [optional] fields to change, e.g.:
name: 'new name'
}]
}
我修改了sencha support提供的演示:
在代理配置中,使用data2.json表示错误,使用data3.json表示成功响应。为什么同时使用:clientId和id?如果指定并使用模型中定义的idProperty配置(与服务器id属性同步),则该配置不起作用?如果查看Ext.data.operation.operation.doProcess方法的源代码,则会看到使用了
clientIdProperty
。可能不需要“正常”id
,但我现在无法检查。
{
"success": false,
"errorMessage": "<error message>"
}
{
"success": true,
}
{
"success": true,
"data": [{
clientId: 5, // clientIdProperty
id: 5,
// [optional] fields to change, e.g.:
name: 'new name'
}]
}