【问题标题】:Cached object in console?控制台中的缓存对象?
【发布时间】:2013-02-04 14:42:13
【问题描述】:

我将从问题开始:

  1. 我正在更改对象文字的内容。 (更改属性值
  2. Firebug 控制台(第一次单击)显示正确 值。
  3. 但一段时间后,它会停留在特定值上并停止更改。

注意:对象的stringify 表示 - 始终显示正确的值

以下是详细信息:

  1. 我在textbox中选择了一个street(它应该在对象中设置StreetText值)

  2. 我查看console(宽线)并按下最后一行,查看街头文字

一开始还可以。在第二次尝试中,我选择了另一条街道后,它仍然保持旧值。

但是,当我(在对象上)按刷新时,它会显示正确的街道名称。

这是怎么回事?

我的对象是一个普通的对象字面量:

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

控制台上的显示是通过单击按钮进行的​​:

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

为什么我没有看到正确的值? (仅在刷新后......)

附言: ff: 14.0.1
FB:1.10.6

缓存关闭

【问题讨论】:

  • 如果您使用任何 jQuery 的 AJAX 方法,您可能需要将 cache 选项指定为 false。我猜浏览器只是缓存旧请求以节省带宽。
  • 发布您提出请求时使用的代码会很有帮助。
  • @zzzzBov 很抱歉问这个问题,但它有什么关系?我确实看到了 STRINGIFY 对象的正确值。这意味着 AJAX 已经完成并更新了属性值。 (我在做ajax时确实使用了cache:false)。如果 ajax async 或 cache 有问题,STRINGIFY 也会显示旧值。
  • 所以这可能是 Firebug 问题。既然您已经使用 .stringify() 证明您的程序代码是正确的,那么我想您会想要使用不同的开发人员工具,或为 Firebug 提交错误报告,或两者兼而有之。
  • @RoyiNamir,虽然很高兴看到你聪明的动画,但它不如看到实际发出请求的代码有用。如果您在处理 AJAX 请求的方式上出现错误,您可能会丢弃新值以支持旧值。

标签: javascript jquery firefox firebug


【解决方案1】:

将console.dir(obj) 用于不是console.log(obj) 的对象,这样做会得到对象的字符串,因此更新它仍然可以在您的代码中工作,但不会显示在控制台中。字符串是不可变的,因此您的控制台中不会显示任何属性更新。提示:在 chrome 调试器中使用 watch 表达式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 2011-11-27
    • 2015-11-07
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多