Ciao,
allora in una pagina web ho il seguente link:
Quindi clickando sul link genero una HTTP Request verso il percorso "/mapping/header"
Associato a tale link con id="byHeader" ho l'attivazione del seguente metodo di uno script JQuery (che da quello che ho capito fà ciò che ho commentato, ovvero cerca dia ggiungere un header all'HTTP Request):
codice:
$("#byHeader").click(function(){ // Seleziona il link avente id="byHeader e gli assegna la seguente funzione di callback per l'evento click"
var link = $(this); // Variabile che si riferisce all'elemento nel DOM che ha scatenato l'evento (il link che è stato clickato)
/* La chiamata AJAX non viene invocata su un oggetto particolare (quindi direttamente su $)
I parametri di input sono: 1) L'URL del link selezionato 2) Il tipo di risposta previso (una stringa)
*/
$.ajax({ url: this.href, dataType: "text",
// Prima di inviare l'HTTP Request esegui la funzione che aggiunge un Header alla richiesta HTTP
beforeSend: function(req) { req.setRequestHeader("FooHeader", "foo"); },
success: function(form) {
MvcUtil.showSuccessResponse(form, link);
},
error: function(xhr) {
MvcUtil.showErrorResponse(xhr.responseText, link);
}
});
return false;
});
Conoscendo molto poco JQuery (ho iniziato a vederlo da poco durante questo esempio) ho vari dubbi in merito all'effettivo funzionamento di tale metodo:
1) In questo caso chiamo la funzione ajax passandogli: l'URL effettivo della richiesta HTTP (this.href) ed il tipo di risposta che mi aspetto di ricevere (dataType: "text"), ma questa cosa si tratta di un oggetto JSON o non c'entra niente?
2) Nella riga:
codice:
beforeSend: function(req) { req.setRequestHeader("FooHeader", "foo"); }
stò andando ad aggiungere un header alla mia richiesta http prima che questa venga effettivamente inviata (credo tramite il beforeSend, giusto?)
Ora quì ho grossi dubbi sul significato di questa cosa...io sapevo che gli header di una HTTP Request fossero qualcosa del tipo:
codice:
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, */*
Accept-Language: it
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: www.html.it
Connection: Keep-Alive
Cookie: __utma=151439968.604684092.1165355506.1165355506.1165357918.2; __utmz=151439968.1165357918.2.2.utmccn=(organic)|utmcsr=google|utmctr=%2Beclipse+%2B%22web+editor%22|utmcmd=organic
Insomma qualcosa generato da un browser che dà informazioni alla web application del tipo: il tipo di MIME che il server può rimandare indietro al client, la lingua predefinita del browser (usata magari dall'applicazione web per determinare la lingua da usare nell'internazionalizzazione, etcetc)
Quindi credo che TUTTE le HTTP Request abbiano degli header (generati automaticamente dal browser o comunque dal client richiedente...)
Con quella riga di codice JQuery cosa stò facendo? E' come se accodassi agli header (del tipo mostrati sopra) una nuova riga avente forma:
FooHeader: foo
O cosa?
3) In caso di successo di tale operazione viene chiamata un'altra funzione a cui viene passato un oggetto form (almeno credo) e che a sua volta richiama un'altra funzione del mio script JQuery, tramite le righe:
codice:
success: function(form) {
MvcUtil.showSuccessResponse(form, link);
},
Perchè?!?! chi è questo oggetto form ?!?! da dove gli arriva ?!?! mi sfugge
Grazie mille
Andrea