JavaScript: gestire il parsing di una chiamata JSONP

JavaScript: gestire il parsing di una chiamata JSONP

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 https://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:


'use strict';

const parseData = json => {
	console.log( json ); // Funzione globale
}

document.addEventListener( 'DOMContentLoaded', () => {
	
	// Aggiungiamo il nome della nostra funzione al parametro callback
	
	const url = 'http://api/?action=value&callback=parseData';
	let script = document.createElement( 'script' );
	script.src = url;
	
	document.body.appendChild( script );
	
});

Il parsing dell'oggetto JSON restituito nella risposta viene quindi affidato alla funzione globale.

Torna su