Commit | Line | Data |
d0d292d4 |
1 | package Catalyst::Action::Serialize::JSONP; |
2 | use base 'Catalyst::Action::Serialize::JSON'; |
3 | |
4 | sub execute { |
5 | my $self = shift; |
6 | my ($controller, $c) = @_; |
7 | |
8 | my $callback_key = ( |
9 | $controller->{'serialize'} ? |
10 | $controller->{'serialize'}->{'callback_key'} : |
11 | $controller->{'callback_key'} |
12 | ) || 'callback'; |
13 | |
14 | if ($c->req->param($callback_key)) { |
15 | $self->{_jsonp_callback} = $c->req->param($callback_key); |
16 | $c->res->content_type('text/javascript'); |
17 | } |
18 | $self->next::method($controller, $c); |
19 | } |
20 | |
21 | sub serialize { |
22 | my $self = shift; |
23 | my $json = $self->next::method(@_); |
24 | if ($self->{_jsonp_callback}) { |
25 | $json = $self->{_jsonp_callback}.'('.$json.');'; |
26 | } |
27 | return $json; |
28 | } |
29 | |
30 | 1; |