クライアントから (ajax 経由で) 送信された複雑なオブジェクトをコントローラーで JSON 形式で取得しようとしていますが、一部のプロパティが変換されたマップを params から取得する方法がわかりません。
たとえば、これが「複雑な」JSON オブジェクトであると想像してください (メタ オブジェクト内のアイテムの数は変数であり、1、2、3 のいずれかで、変数名を使用できます)。
{
language: "java",
meta: {
category: "category1"
}
}
このオブジェクトが jQuery 経由で送信されると、コントローラーでこれを params オブジェクトで取得します。
[language:java, meta[category]:category1, action: register, controller: myController]
そして、これがjQuery経由でオブジェクトを送信する方法です。私はいくつかの呼び出しに共通の機能を持っています:
if (!params) params = {};
var url = this.urls.base+"/"+controller+"/"+action+"?callback=?";
if (params.callback)
url = this.urls.base+"/"+controller+"/"+action+"?callback="+params.callback;
url = url + "&_"+new Date();
delete params.callback;
$.ajax({
url: url,
data: params,
crossDomain:true,
dataType:'jsonp',
cache:false,
ajaxOptions: {cache: false},
jsonp: params.callback?false:true
});
そして、以前に書いたJSONオブジェクトをテストするために送信するajax呼び出しのパラメーターで
コントローラーで params.meta を実行しようとすると、null オブジェクトが返されます。params オブジェクトからマップを取得するにはどうすればよいですか?