Enables cross-domain requests to any JSON API.
Very useful for mashup sites - since API calls can be done client-side, no server code is needed. Note that exposing API secret keys in client code is discouraged.
For APIs that support
JSONP. Example using
jQuery.getJSON()
:
For
browsers
and APIs that support
CORS. Example using
fetch()
:
Wrapper function of
jQuery.ajax()
, which detects browser support and picks the best available
transport:
In addition to the options available for
jQuery.ajax()
, the plugin adds two additional options:
corsSupport
and jsonpSupport
.
bower install jsonproxy
, or
download directly. Requires jQuery 1.5+ and
URI.js.
Once the plugin is installed, it's easy to include it from a frontend module loader like RequireJS:
Check out the RequireJS jQuery guide for more information.
Unfortunately, detection of response errors with JSONP is difficult, at best. jQuery's JSONP implementation won't call an error callback unless an explicit timeout is specified (which the plugin takes care of) - see here for more info and options.
CORS, however, is just normal AJAX! There is also a security advantage, in that it's not possible for a malicious service (including this one) to run arbirtrary JavaScript on your page.