JSONP s jQuery, MooTools a Dojo

Všichni víme, že velkým omezením AJAXu je, že nejsou povoleny požadavky napříč doménami. Víme však také, že toto pravidlo trochu obcházíme pomocí JSONP. JSONP je proces vkládání značek SCRIPT, odkazující na adresu URL napříč doménami a poskytující funkci zpětného volání (na vaší stránce), kterou poskytovatel zavolá, abyste mohli zpracovat výsledek. Pojďme se podívat na to, jak se JSONP zachází s jQuery, MooTools a Dojo Toolkit. Pro naše příklady vytáhneme tweety z Twitteru s výrazem „Arsenal“.

jQuery JSONP

jQuery používá pro JSONP stejnou metodu jako pro běžný JSON – metodu jQuery.getJSON:

jQuery.getJSON("http://search.twitter.com/search.json?callback=?",{
	q: "Arsenal"
},function(tweets) {
	// Handle response here
	console.info("Twitter returned: ",tweets);
});

Pokud je metodě getJSON poskytnut parametr zpětného volání, bude jQuery zvažovat požadavek JSONP.

MooTools JSONP

MooTools vyžaduje třídu Request.JSONP dostupnou v MooTools More. Vyzbrojeni Request.JSONP je načítání JSON z jiné domény hračka:

new Request.JSONP({
	url: "http://search.twitter.com/search.json",
	data: {
		q: "Arsenal"
	},
	onComplete: function(tweets) {
		// Log the result to console for inspection
		console.info("Twitter returned: ",tweets);
	}
}).send();

Request.JSONP je také super kompaktní třída!

Dojo JSONP

JSONP se sadou nástrojů Dojo vyžaduje prostředek dojo.io.script a jeho metodu get:

// dojo.io.script is an external dependency, so it must be required
dojo.require("dojo.io.script");

// When the resource is ready
dojo.ready(function() {
	
	// Use the get method
	dojo.io.script.get({
		// The URL to get JSON from Twitter
		url: "http://search.twitter.com/search.json",
		// The callback paramater
		callbackParamName: "callback", // Twitter requires "callback"
		// The content to send
		content: {
			q: "Arsenal"
		},
		// The success callback
		load: function(tweetsJson) {  // Twitter sent us information!
			// Log the result to console for inspection
			console.info("Twitter returned: ",tweetsJson);
		}
	});
});

Načítání JSON pomocí Dojo se obvykle provádí pomocí metody dojo.xhrGet, ale JSONP vyžaduje tuto speciální metodu. Argumenty pro dojo.io.script.get jsou stejné jako dojo.xhrGet s výjimkou parametru zpětného volání.

JSONP je velmi efektivní, spolehlivý a snadno implementovatelný. Strategie JSONP také umožňují vývojářům vyhnout se těžkopádnému zápisu na server proxy za účelem načítání dat. Každá z výše uvedených knihoven JavaScriptu má osvědčené metody pro načítání dat JSON napříč doménami – je na vás, abyste je implementovali, aby vyhovovaly vašim potřebám!