わかりました、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
}
]
そのため、何らかの理由でモデルを null 値として含め、パラメータを Json オブジェクトのルート ノードに配置しています。
サーバーは同様の方法でクライアントにデータを送信しますが、Json プロキシの Json リーダーにはレコード パラメータがあります (こちらを参照)。残念ながら、Json Writer にはそのようなプロパティはありません (設定しようとしたため、文書化されていません)。
現在、バックエンドでの私の回避策は次のとおりです。
$json = Set::insert($json, 'Model', $json);
しかし、これを達成するためのより良い方法があれば良いでしょう。
更新: さらに拡張するために、関連付けられたモデルをクライアントに自動的に入力するネストされた Json データをロードする 1 つのストアをロードしています。(これはすべて、カスタム コードを使用せずに Extjs メソッドで実行されます)。
Json ライターでルート プロパティを試してみましたが、残念ながらバッチ レコードを使用すると、リクエストが次のようにフォーマットされます。
{
[Root] : [
{
[Field1]: [Value1],
[Field2]: [Value2],
[Field3]: [Value3],
[Model] : null
},
{
[Field1]: [Value1],
[Field2]: [Value2],
[Field3]: [Value3],
[Model] : null
}
]
}
Bancha ( http://banchaproject.org ) も試してみましたが、Sencha Architect (このプロジェクトで使用されています) で動作させることができず、現時点で提供されている解決策は「回避策」でした (私は働くことができませんでした)。
ありがとう、-T6