Catalyst::View::JSONでJSONPからの~jQuery.ajax。

普段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