2013-02-04 71 views
12

我將從問題開始:控制檯中的緩存對象?

  1. 我正在更改對象字面量的內容。 (更改屬性值
  2. Firebug控制檯(最初點擊)顯示正確的值。
  3. 但過了一段時間,它停留在一個特定的值,並停止改變。

通知:該對象的stringify表示 - 總是顯示正確的值

而且下面是詳細信息:

  1. 我選擇在textbox一個street(它應在對象中設置StreetText值)

  2. 我看了t的console(寬線),並按最後一行,看街道文字

起初沒問題。在第二次嘗試中,在我選擇另一條街道之後,它保持舊值。

但是,當我按刷新(在對象上)時,它會顯示正確的街道名稱。

這是怎麼回事?

enter image description here

我的對象是一個普通的對象常量:

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() || ""; 
       } 
     } 

,並在控制檯上顯示由onclicking此按鍵:

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

爲什麼我沒有看到正確的值? (只有刷新後....)

p.s. : FF:14.0.1
FB:1.10.6

和緩存被關閉

enter image description here

+2

如果您使用任何jQuery的AJAX方法,您可能需要將'cache'選項指定爲'false'。我猜想,瀏覽器只是緩存舊的請求,以節省帶寬。 – zzzzBov

+0

發佈您在提出請求時使用的代碼會很有幫助。 – zzzzBov

+0

@zzzzBov對不起,但它是如何相關的?我確實在STRINGIFY對象上看到了正確的值。這意味着AJAX已經完成並更新了屬性值。 (並且我在使用ajax時使用cache:false)。如果ajax異步或緩存存在問題,則STRINGIFY也會顯示舊值。 –

回答

4

使用console.dir(OBJ)的對象不CONSOLE.LOG(OBJ)你通過這樣做得到了一個對象的字符串,所以更新它仍然可以在你的代碼中工作,但不能在控制檯中顯示。字符串是不可改變的,所以沒有屬性更新將顯示在控制檯中。提示:在Chrome調試器中使用監視表達式。