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