JSONP (JSON with Padding) ha la peculiare caratteristica di venire gestito da remoto con una funzione globale di callback. In JavaScript occorre seguire una procedura precisa per gestire questo formato di dati.
Di solito gli URL delle API che utilizzano questo formato si presentano come http://api/?action=value&callback=?
. Il punto interrogativo nel parametro callback
sta ad indicare che quel valore va sostituito con il nome di una funzione globale implementata dal client per il parsing dei valori di ritorno (un oggetto JSON).
Per globale si intende una funzione che risulta essere una proprietà dell'oggetto window
. Se il server remoto lo consente, possiamo effettuare una richiesta AJAX diretta. In caso contrario (ad esempio Flickr), dobbiamo procedere come segue:
function parseData( json ) {
console.log( json ); // Funzione globale
}
document.addEventListener( "DOMContentLoaded", function() {
// Aggiungiamo il nome della nostra funzione al parametro callback
var url = "http://api/?action=value&callback=parseData";
var script = document.createElement( "script" );
script.src = url;
document.body.appendChild( script );
});
Il parsing dell'oggetto JSON restituito viene quindi affidato alla funzione globale.