The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mojolicious::Plugin::JSONP - Render JSONP with transparent fallback to JSON

SYNOPSIS

  plugin JSONP => callback => 'callback_function';

  get '/' => sub {
    shift->render_jsonp({one => 'two'});
  };

  # GET request:
  #  ?callback_function=my_function

  # Response:
  #  my_function({"one":"two"})

DESCRIPTION

Mojolicious::Plugin::JSONP is a helper for rendering JSONP with a transparent fallback to JSON if a callback parameter is not specified.

The render_jsonp helper renders a Perl reference as JSON, wrapped in a supplied callback. If a callback is not supplied, only the JSON structure is returned.

Explanation

Given the following configuration:

  plugin JSONP => callback => 'callback_function';

And the following action:

  get '/' {
    shift->render_jsonp({one => 'two'})
  };

And this client (browser) request:

  http://domain.com/?callback_function=my_function

The following is returned:

  my_function({"one":"two"});

If the client request does not specify the expected callback function:

  http://domain.com/  # No parameters specified

Only the JSON is returned:

    {"one":"two"}

Optionally, specify the callback function name in the render_jsonp helper:

  get '/' => sub {
    shift->render_jsonp(callback_function => {one => "two"});
  };

Overriding plugin configuration, the following response is returned:

  callback_function({"one":"two"})

METHODS

Mojolicious::Plugin::JSONP inherits all methods from Mojolicious::Plugin and implements the following new ones.

register

  $plugin->register(Mojolicious->new);

Register plugin in Mojolicious application.

SEE ALSO

Mojolicious, Mojolicious::Guides, http://mojolicio.us.