Skip to content
marzo 13, 2009 / Davide

Ajax: problema con la cache Javascript in IE

Ieri stavo lavorando ad una pagina web dove, selezionando un valore da un menù a tendina, questo, attraverso una chiamata ajax, andava a creare dinamicamente una seconda combo box.

Per farvi capire, nella prima combo box avevo l’elenco dei corsi di una scuola, mentre  nella seconda i nomi dei partecipanti.

Bene, la prima volta che selezionavo un corso la chiamata avveniva con successo e ottenevo l’elenco corretto dei partecipanti. Se però, eliminavo un partecipante e riprovavo a selezionare il corso, mi appariva sempre l’elenco con il partecipante cancellato.

Sono impazzito un po’ per trovare la soluzione, immaginavo che il problema fosse la cache.

Cercando…cercando…cercando mi sono imbattuto in questo articolo dal quale questo mio prende spunto.

La soluzione che propone se vogliamo è abbastanza banale, ma efficace.

La chiamata Ajax che utilizzavo avveniva attraverso questa funzione:

function Richiesta(data_source)
{
var url = data_source;
XMLHTTP = RicavaBrowser(CambioStato);
XMLHTTP.open("GET", url, true);
XMLHTTP.send(null);
}

Dove data_source non è altro che il link alla pagina php.

E’ stato sufficiente modificarala in:

function Richiesta(data_source)
{
var url = data_source+ "&random=" + Math.random();
XMLHTTP = RicavaBrowser(CambioStato);
XMLHTTP.open("GET", url, true);
XMLHTTP.send(null);
}

Aggiungendo + “&random=” + Math.random(); facciamo in modo che ogni data_source sia differente quindi “forziamo” il browser a fare una chiamata al server e non a ricercare in cache.

Questa risoluzione mi ha permesso di risolvere il problema, avete altre idee?

Annunci

2 commenti

Lascia un commento
  1. Fabrizio / Nov 4 2010 6:06 pm

    Mi hai salvato… sono 3 giorni che impazzisco, ma pensavo che il problema fosse nelle variabili delle richieste annidate e invece era banalissimo xD Garzie Ancora

  2. davide / Nov 15 2011 6:19 pm

    ti adoro!!! stavo impazzendo pure io per sta cosa!!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: