Session Ext数据会话和错误的服务器响应(“W]忽略服务器记录:…”)

Session Ext数据会话和错误的服务器响应(“W]忽略服务器记录:…”),session,extjs,extjs5,Session,Extjs,Extjs5,我们的应用程序在客户端处理和管理记录更改。我们使用ExtJS5机制 会话跟踪需要更新、创建或销毁的记录 在服务器上。它还可以命令这些操作,以确保 已创建的记录正确引用其他新创建的记录 他们的新的、服务器分配的id 让我介绍一下简短的用例。 用户打开并填写表单。场景后面的字段绑定到由会话跟踪的实体对象。当用户单击Submit时,会话被同步,即Ext向服务器发送请求并解析响应。这里我遇到了一个问题 服务器返回以下对象,但Ext无法识别它: [{"success": false, errorMessa

我们的应用程序在客户端处理和管理记录更改。我们使用ExtJS5机制

会话跟踪需要更新、创建或销毁的记录 在服务器上。它还可以命令这些操作,以确保 已创建的记录正确引用其他新创建的记录 他们的新的、服务器分配的id

让我介绍一下简短的用例。 用户打开并填写表单。场景后面的字段绑定到由会话跟踪的实体对象。当用户单击Submit时,会话被同步,即Ext向服务器发送请求并解析响应。这里我遇到了一个问题

服务器返回以下对象,但Ext无法识别它:

[{"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'
   }]
 }