好的,伙计们,正在使用 ExtJS4,我遇到了这个人所做的几乎完全相反的问题:
如何让 ExtJS JsonStore 将 JSON 数据直接放入请求正文中?
在我的应用程序中,我有一个嵌套数据结构正在加载相关模型。
后端的 CakePHP 需要(在伪代码中)保存以下格式:
[
{
[Model]
[Field1]: [Value1],
[Field2]: [Value2],
[Field3]: [Value3]
},
{
[Model]
[Field1]: [Value1],
[Field2]: [Value2],
[Field3]: [Value3]
}
]
这是 ExtJS 当前发送到服务器的内容:
[
{
[Field1]: [Value1],
[Field2]: [Value2],
[Field3]: [Value3],
[Model] : null
}
]
因此,出于某种原因,它将模型作为空值包含在内,并将参数放在 Json 对象的根节点中。
服务器以类似的方式将数据发送到客户端,但 Json 代理的 Json Reader 有一个记录参数(请参阅此处)。不幸的是,Json Writer 没有这样的属性(甚至没有记录,因为我尝试设置它)。
目前我在后端的解决方法是:
$json = Set::insert($json, 'Model', $json);
但如果有更好的方法来实现这一点会很好。
更新: 为了进一步扩展,我正在加载一个加载嵌套 Json 数据的商店,该数据会自动填充客户端中的关联模型。(这一切都是用 Extjs 方法完成的,没有任何自定义代码)。
我已经在 Json 编写器中尝试了 root 属性,但不幸的是,它使用批处理记录来格式化请求,如下所示:
{
[Root] : [
{
[Field1]: [Value1],
[Field2]: [Value2],
[Field3]: [Value3],
[Model] : null
},
{
[Field1]: [Value1],
[Field2]: [Value2],
[Field3]: [Value3],
[Model] : null
}
]
}
我也尝试过 Bancha(http://banchaproject.org),但我无法让它与 Sencha Architect(用于该项目)一起工作,他们目前提供的解决方案是一种“解决方法”(我无法开始工作)。
谢谢,-T6