Le richieste asincrone rappresentano il "cuore" delle applicazioni Web 2.0. A questo proposito MooTools ci fornisce una gerarchia di classi e funzionalità per creare le nostre richieste asincrone al server e personalizzarle in ogni loro aspetto tramite i costruttori Request, Request.HTML e Request.JSON.
In questa lezione vedremo come contattare il server per gestire responsi di codice HTML utilizzando la classe Request.HTML. Essa estende la superclasse Request, che fornisce metodi ed opzioni molto utili, tra cui troviamo:
onRequest, onSuccess, onCancel, onFailure e onException;setHeader e getHeader per lavorare con le intestazioni di richiesta/risposta;url, method, data, async, encoding, autoCancel, header, isSuccess per personalizzare l'andamento e le tipologie della nostra richiesta;send per l'inoltro della richiesta ed il metodo cancel per l'annullamento. Cosi come la rispettiva superclasse, Request.HTML accetta come unico parametro un oggetto rappresentante le opzioni della richiesta.
Come sappiamo, esitono diverse modalità per contattare il server. Le più importanti ed utilizzate sono le richieste HTTP get e post. La superclasse Request fornisce appunto i metodi get e post (shortcuts del metodo send), usati per interrogare il server con la metodologia desiderata. Essi accettano argomenti dinamici che possono essere rappresentati dall'url in formato stringa da contattare, dalla querystring oppure da un oggetto formato dalle accoppiate "key/value" che costituiscono la nostra serie di parametri. Vediamo degli esempi di richieste in modalità get e post:
// creiamo l'istanza della nostra richiesta
var req = new Request.HTML();
// contattiamo la pagina 'server.php' con una richiesta 'get'
req.get('server.php');
// creiamo una nuova istanza e contattiamo il server in modalità 'get' passando una querystring
// l'url contattato assumerà la seguente forma: 'another_server.php?name=Jack&city=NewYork'
var req2 = new Request.HTML({url: 'another_server.php'}).get({'name': 'Jack', 'city': 'NewYork'});
// creiamo una nuova richiesta in modalità 'post' utilizzando la stessa istanza
req2.post('name=Jack&city=NewYork');
Un'altra interessante possibilità è quella di passare come argomento un riferimento ad un elemento di tipo 'form'. MooTools elaborerà internamente la querystring interrogando tutti i suoi elementi figli:
// passiamo il riferimento al form 'the-form-id' e creiamo una richiesta 'post'
var req3 = new Request.HTML({url:'server_3.php'}).post($('the-form-id'));
In questa efficace modalità non dovremo creare la nostra querystring in modo manuale.
Ora che abbiamo imparato come contattare il server tramite la classe Request.HTML, vediamo un esempio più complesso, dove vengono impostati gli eventi ed ulteriori parametri per gestire al meglio la nostra richiesta:
var text = $('text');
var req = new Request.HTML({
url: 'server.php', // l'url da contattare
update: text, // l'elemento che verrà aggiornato al completamento della richiesta
evalScripts: false, // gli script contenuti nel responso non verranno azionati
onRequest: function() {
text.set('html', 'Request is running...');
},
onComplete: function(tree, elements, html, js) {
text.set('html', html);
},
onFailure: function() {
text.set('html', 'The Request has failed...');
}
});
// azioniamo la richiesta passando qualche parametro
req.post({'name': 'Jack', 'city': 'NewYork'});
Qui è possibile visualizzare questo esempio pratico ed azionare la richiesta cliccando sul pulsante 'Start request'.
Come di consueto, anche per la classe Request.HTML abbiamo a disposizone un'estensione dell'Hash Element.Properties che permette di utilizzare un metodo shortcut della classe Element: load. Esso aziona la richiesta ed imposta l'elemento sulla quale viene applicato come il 'contenitore' per i risultati. Accetta come unico argomento l'url da contattare:
// settiamo le opzioni dell'istanza di Request.HTML
$('req').set('load', {method: 'post'});
// azioniamo la richiesta
$('req').load('server4.php');
PhantomJS, headless browser per test con JavascriptIl tool ideale per realizzare, da terminale, operazioni in remoto su... |
Creare e leggere QR Code in JavaScriptApplicazioni 'QR Code enabled' per il Web e per il mobile,... |
Jquery UI Map: web-mapping con Google Maps e jQueryUn plugin di jQuery UI per intefacciare applicaizoni Web/mobile con... |
Scrollorama e Scrolldeck, slideshow d'effetto con jQueryPlugin jQuery per ottenere Slideshow con diversi effetti di scrolling |
jCanvas, un primo semplice graficoAlla scoperta della libreria jCanvas, per semplificare il disegno e... |
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida Javascript: tecniche avanzateUna guida dal taglio pratico per approfondire la programmazione a... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |