To support JSONP requests, the server will have to include the P
, or “Padding,” in the response.
jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})
The syntax error, "Unexpected token :"
, is because JSONP is parsed as JavaScript, where {...}
also represents blocks. It just takes advantage of JSON and JavaScript’s similar syntax to define the data being passed to a global function call.
By default, jQuery will include a callback
query-string parameter with the name of the function:
var callback = req.query.callback;
var data = JSON.stringify({
Name : "Tom",
Description : "Hello it's me!"
});
if (callback) {
res.setHeader('Content-Type', 'text/javascript');
res.end(callback + '(' + data + ')');
} else {
res.setHeader('Content-Type', 'application/json');
res.end(data);
}
ExpressJS also includes res.jsonp()
that already implements this condition:
app.get( "https://stackoverflow.com/", function( req, res ) {
console.log( 'req received' );
res.jsonp({
Name : "Tom",
Description : "Hello it's me!"
});
});