Catalyst::View::JSONでJSONPからの~jQuery.ajax。
2013年2月16日
普段JSONPを使う機会があまりないので、すぐ忘れますw
毎回ぐぐるのもあれなんでメモ程度に。
C::Plugin::ConfigLoaderで読まれるファイルに、allow_callbackを追加。
View::JSON: expose_stash: json_data allow_callback: 1
Controllerは、jsonの時と同じ。
sub hoge : Local { my ($self,$c) = @_; $c->stash->{'json_data'} = { 'key' => 'value' }; } sub end : private { my ($self,$c) = @_; if ( $c->stash->{'json'} ) { $c->forward('View::JSON'); return 1; } # 通常の処理 # Xslateにforwardするとか。 }
で、jQueryで呼ぶ。
function foo () { $.ajax({ type: "POST", url: "http://www.myapp.com/hoge", data: "user=1111&name=aaaa", dataType: "jsonp", jsonp: "callback", success: function(data) { // 何か処理 } }); }
jsonの時と違うのは、dataTypeと、jsonp。
dataTypeは、jsonpを指定。
jsonpは、コールバック時の関数名。
(Catalyst::View::JSONのdefaultがcallbackだったので合わせてあります)
ちなみに、C::V::JSONのコールバック関数はcallback_paramで変更できるみたいです。
View::JSON: expose_stash: json_data allow_callback: 1 callback_param: result