dic
11
Javascript: come gestire il document.write in una chiamata Ajax
Pubblicato da Mic in Guide, Tecnologie, Web
Una pratica molto comune nei siti così detti “web 2.0” è l’eseguire una chiamata Ajax, facendo poi l’eval del codice ottenuto in risposta, così da aggiornare la pagina senza cenessità di ricaricarla completamente.
In un caso particolare, se il codice contiene il comando document.write, l’unico risultato che si avrà sarà quello di riscrivere tutta la pagina con il testo contenuto nella funzione write.
In un’epoca di mash-up e interazione tra web application, può succedere di non avere controllo su quello che il server remoto risponde e, quindi, la funzione document.write deve essere gestita lato client.
La soluzione al problema è in verità molto semplice.
(Il codice che seguirà presuppone la conoscenza della libreria jQuery)
Supponiamo di dover usare la seguente chiamata Ajax:
$.ajax({url:'http://example.com/path/to/the/js/',type:'GET',dataType:'script',data:''});
per inserire il testo ricevuto in un div che ha id pippo. Il problema è che la chiamata riceve ed esegue l’eval del seguente codice javascript:
document.write('SEB Rocks!');
Eseguendo così l’istruzione, ci ritroveremmo con una pagina bianca con scritto solo “SEB Rocks!”.
Al fine di inserire il testo contenuto nel document.write nel nostro div, sarà necessario, prima di eseguire la chiamata Ajax, ridefinire la funzione in questo modo:
document.write=function(txt){
$(’#pippo’).html(txt);
}
A questo punto la chiamata Ajax farà proprio quello che vogliamo noi: scriverà il testo all’interno del div pippo.
Se, successivamente a questa operazione, è necessario ripristinare l’originale document.write, è sufficiente, prima di fare l’assegnazione salvare la funzione in una “variabile” temporanea.
mytemp_f=document.write;
document.write=function(txt){
$(’#pippo’).html(txt);
}
//Qui usi la tua nuova funzione document.write
document.write=mytemp_f;
//Da qui in poi puoi usare nuovamente la tua solita document.write…
Tag: ajax, document.write, javascript.
Oppure leggi altri nostri articoli:



