Oltre a $.ajax()
, jQuery mette a disposizione alcune utili scorciatoie per alcuni tipi di richieste molto utilizzate.
Anzitutto $.post()
e $.get()
che inviano rispettivamente richieste POST e GET al server. Ambedue le funzioni accettano fino a 4 parametri:
url
: l'url a cui inviare la chiamatadata
: come in$.ajax()
, un oggetto o stringa rappresentante i valori da inviare al servercallback
: una funzione da lanciare quando i dati sono stati caricati correttamente. Accetta come argomento i dati e lo stato della richiestatype
: il tipo di dati richiesto, di default html o xml (vedidataType
in$.ajax()
).
Altre due scorciatoie molto utili sono $.getJSON()
e $.getScript()
. La prima serve a caricare dati JSON da un server (anche remoto) ed accetta come argomenti l'indirizzo della
richiesta, eventuali dati in formato stringa e JSON, ed una funzione di callback (dello stesso tipo di $.get()
e $.post()
); la secondo serve a caricare JavaScript remoto ed accetta solo l'indirizzo del server ed una funzione di callback. Un'ultima funzione è .load()
, un metodo che gestisce solo dati HTML o testuali e li inserisce all'interno degli elementi della collezione corrente. Come altre
scorciatoie accetta anche dei dati da inviare al server come stringa o oggetto JSON, nonché una funzione di callback da lanciare al caricamento dei dati:
$("#pannello").load(
"pagina.html", //pagina da caricare
{}, //un oggetto JavaScript vuoto = nessun dato da inviare
function () { //funzione di callback
alert("dati caricati!");
}
});
Ecco un esempio pratico.
Funzioni di supporto
Come detto sopra, $.ajax()
accetta come argomento un oggetto con alcuni parametri per definire il comportamento della richiesta AJAX.
Nel caso questi parametri dovessero essere impostati per molte richieste, è possibile definirli globalmente passandoli, sempre come oggetti JavaScript, alla funzione $.ajaxSetup()
:
//Tutte le richieste AJAX restituiscono un oggetto JSON
$.ajaxSetup({
dataType : 'json'
});
Per quanto riguarda la gestione dei dati da inviare via AJAX, jQuery offre due interessanti metodi: il primo, .serialize()
, converte i campi di un form in una stringa serializzata:
var stringa = $("form").serialize();
//stringa = "nomecampo1=valore&nomecampo2=valore"
Il secondo metodo è .serializeArray()
che si applica sempre ad un form, ma restituisce un oggetto JSON manipolabile:
var oggetto = $("form").serializeArray();
//stringa = [{ key : "nomecampo1" , value : "valore1"},{ key : "nomecampo2" , value : "valore2"}]