Apr 302013
 

Le chiamate AJAX classiche lavorano con l’oggetto XMLHTTPREQUEST (XHR). La maggior parte dei browser non consenton ad XHR di accedere ad altri server, o meglio a domini diversi rispetto a quello da cui parte la chiamata. Pero ovviare a questa limitazione è stato invantato JSONP, ovvero il JSON viene avvolto all’interno di una chiamata a una funzione. Invece di fare una richiesta AJAX, viene aggiunto un elemento script che punta allo script JSONP all’interno del documento HTML e una funzione di callback viene chiamata per accedere allo script.

Ovviamente attenzione perché i vendors hanno fatto questa scelta per motivi di sicurezza: infatti no c’è nessuna validazione del codice prima dell’esecuzione, quindi serve cautela.


<!DOCTYPE html>
<html lang="en">
<head>
<title>JSONP</title>
</head>
<body>
<h2>Premi il bottone per effettuare una richiesta.</h2>
<button id="trigger">GET</button>
<br>
<div id="target"></div>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(document).ready(function() {
$('#trigger').click(function() {
$.getJSON('http://search.twitter.com/search.json?q=jquery&callback=?', function(data) {
$.each(data.results, function(index, value) {
$('#target').append(value.text + '<br>');
});
});
});
});
</script>
</body>
</html>

La maggor parte del codice dovrebbe essere chiara alla luce dei post precedenti.

Per impostazione predefinita, il gestore JSONP in jQuery cerca il parametro callback=? nella stringa di query. Il “?” viene sostituito con una funzione di callback jQuery generato da inserire nel JSONP dal server È possibile modificare le impostazioni se il parametro ha un altro nome di callback o quando il metodo di callback non è parametrizzato. Il miglior consiglio è quello di evitare, quando possibile JSONP

L’esempio

 

 

Sorry, the comment form is closed at this time.