代码之家  ›  专栏  ›  技术社区  ›  TomH

extjs:ext.data.datareader:使用无效的远程数据调用了realize

  •  0
  • TomH  · 技术社区  · 16 年前

    当我通过post请求创建新记录时,收到一个“ext.data.datareader:;realize was called with invalid remote data”错误。尽管与讨论相似 at this SO conversation ,我的情况略有不同:

    我的服务器返回新记录的pk和与网格中的新记录相关联的附加信息。我的服务器返回以下信息:

    {'success':true,'message':'Created Quote','data': [{'id':'610'}, {'quoteNumber':'1'}]}
    

    其中id是mysql数据库中记录的pk。quotenumber是一个db生成的值,需要添加到创建的记录中。

    其他相关位:

    var quoteRecord = Ext.data.Record.create([{name:'id', type:'int'},{name:'quoteNumber', type:'int'},{name:'slideID'}, {name:'speaker'},{name:'quote'}, {name:'metadataID'}, {name:'priorityID'}]);
    
    var quoteWriter = new Ext.data.JsonWriter({ writeAllFields:false, encode:true });
    
    var quoteReader = new Ext.data.JsonReader({id:'id', root:'data',totalProperty: 'totalitems', successProperty: 'success',messageProperty: 'message',idProperty:'id'}, quoteRecord);
    

    我被难住了。有人吗??

    谢谢

    汤姆

    2 回复  |  直到 16 年前
        1
  •  2
  •   Brian Moeskau    16 年前

    [用答案而不是代码格式的注释来响应…]

    一些缩进格式将使区别变得清晰。此(正确)表单返回具有两个属性的单个对象:

    {
        'success':true,
        'message':'Created Quote',
        'data': [{
            'id':'610',
            'quoteNumber':'1'
        }]
    }
    

    原始格式返回了两个属性不匹配且无法解析为列的单独对象:

    {
        'success':true,
        'message':'Created Quote',
        'data': [{
            'id':'610'
        },{
            'quoteNumber':'1'
        }]
    }
    
        2
  •  1
  •   TomH    16 年前

    服务器的响应应该如下所示:

    {'success':true,'message':'Created Quote','data': [{'id':'610','quoteNumber':'1'}]}
    

    一个微妙的区别,不是我确定我能理解的。