Ecco un'altro simpatico problema che ho incontrato in questi ultimi 2 giorni e che voglio condividere con voi.
Ho programmato in php+ jqueryun'applicazione web che memorizza dati su un database ogni volta che si clicca su un bottone o si passa da un campo di testo ad un altro, con l'intento di rendere molto veloce la memorizzazione dei dati senza richiedere il refresh della pagina.
Non potete immaginare la frustrazione nel vedere che, mentre con Firefox andava come una scheggia, con Internet Explorer non funzionava nulla! Tra l'altro è proprio il browser che non ha un briciolo di estensioni per il debug... (a proposito, grazie all'inventore di firebug!!
Il problema stava nel fatto che IE memorizza in cache i risultati delle pagine php che si richiamano con le istruzioni in ajax.
Anche se i dati in database venivano modificati, la pagina non li visualizzava aggiornati.
La soluzione: utilizzare la funzione $.ajax() piuttosto che $.get o $.post
E quindi ho sostituito il codice:
$.get('functions.php',{
target:"prova
},function(data){
alert('ok');
},'text');
con
$.ajax({
url:'functions.php',
type:"GET",
cache:false,
async:false,
data:"target=prova"
success:function(data){
alert('ok');
}
})
e ho aggiunto per sicurezza il metatag nella pagina principale per il cache-control:
E adesso anche IE si comporta bene! :)
Ho programmato in php+ jqueryun'applicazione web che memorizza dati su un database ogni volta che si clicca su un bottone o si passa da un campo di testo ad un altro, con l'intento di rendere molto veloce la memorizzazione dei dati senza richiedere il refresh della pagina.
Non potete immaginare la frustrazione nel vedere che, mentre con Firefox andava come una scheggia, con Internet Explorer non funzionava nulla! Tra l'altro è proprio il browser che non ha un briciolo di estensioni per il debug... (a proposito, grazie all'inventore di firebug!!
Il problema stava nel fatto che IE memorizza in cache i risultati delle pagine php che si richiamano con le istruzioni in ajax.
Anche se i dati in database venivano modificati, la pagina non li visualizzava aggiornati.
La soluzione: utilizzare la funzione $.ajax() piuttosto che $.get o $.post
E quindi ho sostituito il codice:
$.get('functions.php',{
target:"prova
},function(data){
alert('ok');
},'text');
con
$.ajax({
url:'functions.php',
type:"GET",
cache:false,
async:false,
data:"target=prova"
success:function(data){
alert('ok');
}
})
e ho aggiunto per sicurezza il metatag nella pagina principale per il cache-control:
<meta http-equiv="cache-control" content="no-cache">
E adesso anche IE si comporta bene! :)
Aggiungi un commento