2013-02-04 23 views
12

Comincerò con il problema:Oggetto memorizzato nella cache nella console?

  1. sto cambiando il contenuto di un oggetto letterale. (modifica dei valori delle proprietà)
  2. La console Firebug (al primo clic) mostra i valori corretti corretti.
  3. Ma dopo un po ', si blocca su un valore specifico e si ferma a cambiare.

(avviso: la stringify rappresentazione dell'oggetto - mostra sempre i valori corretti)

Ed ecco i dettagli:

  1. seleziono un street nel textbox (si dovrebbe impostare il valore StreetText nell'oggetto)

  2. I look a t console (linea estesa) e premere l'ultima riga, guardando il testo.

All'inizio è OK. Nel secondo tentativo, dopo aver scelto un'altra strada, rimane sul vecchio valore.

Tuttavia, quando si preme refresh (sull'oggetto), viene visualizzato il nome corretto della via.

Cosa sta succedendo qui?

enter image description here

Il mio oggetto è un oggetto normale letterale:

var obj = 
      { 
       getData: function() 
       { 

        obj.CountryId = $(".ddlCountry").val() || ""; 
        obj.CountryText = $(".ddlCountry :selected").text() || ""; 
        obj.StateId = $(".ddlState:visible").val() || ""; 
        obj.StateText = $(".ddlState:visible :selected").text() || ""; 
        obj.CityId = $(".hfDataIdCity").val() || ""; 
        obj.CityText = $(".hfDataTextCity").val() || ""; 
        obj.StreetId = $(".hfDataIdStreet").val() || ""; 
        obj.StreetText = $(".hfDataTextStreet").val() || ""; 
       } 
     } 

e il display sulla console è fatta da onclicking il tasto:

obj.getData(); 
console.log(obj); 

Perché io non sto vedendo i valori corretti? (solo dopo l'aggiornamento ....)

p.s. : ff: 14.0.1
fb: 1.10.6

e la cache è spento

enter image description here

+2

Se si sta utilizzando uno dei metodi AJAX di jQuery, sarà probabilmente necessario specificare l'opzione 'cache' come' false'. Immagino che il browser stia semplicemente memorizzando nella cache la vecchia richiesta di risparmiare larghezza di banda. – zzzzBov

+0

Inviare il codice che si utilizza quando si effettua la richiesta sarebbe utile. – zzzzBov

+0

@zzzzBov mi dispiace per la domanda, ma come si relaziona?Vedo i valori di currect sull'oggetto STRINGIFY. il che significa che AJAX HA GIÀ COMPLETATO E AGGIORNATO IL VALORE DELLA PROPRIETÀ. (e io uso la cache: false quando si fa ajax). se ci fosse un problema con ajax async o cache, STRINGIFY avrebbe ANCHE mostrato il vecchio valore. –

risposta

4

Usa console.dir (obj) per gli oggetti non console.log (obj), stai ottenendo una stringa dell'oggetto facendo così l'aggiornamento funzionerà ancora nel tuo codice ma non verrà visualizzato nella console. Le stringhe sono immutabili, quindi nessun aggiornamento delle proprietà verrà mostrato nella tua console. Suggerimento: utilizza le espressioni di controllo nel debugger di Chrome.

Problemi correlati