为什么在jquery ajax调用和刷新后dom不同步?

时间:2009-10-02 12:39:41

标签: jquery dom refresh

我有一个使用内联编辑和ajax来修改字段的表。该表按姓氏排序。

如果我更改姓氏以便更改行顺序然后执行页面刷新,则表格会重新排序,但我更改的字段仍然具有dom中的先前值。输入字段在html中具有正确的值,但显示了dom值。

硬刷新当然会显示所有正确的值。

为什么我的DOM不同步?如何刷新以显示正确的值?


回复后编辑

Firefox保留了输入字段的先前值。在网上浏览后,我发现添加<form autocomplete="off">会强制Firefox 缓存旧值。

2 个答案:

答案 0 :(得分:2)

几乎可以肯定,您的浏览器会通过刷新保留表单值。您是否可以对其进行排列,以便在刷新时,再次触发用于从输入字段更新DOM的触发器?

在不知道DOM和输入字段如何在代码中进行交互的情况下,很难提供更多细节。

答案 1 :(得分:2)

我认为浏览器正在缓存表单字段的先前值(很糟糕)。真正令人沮丧的是,如果我更改多个项目,几乎不可能弄清楚value属性是否正确或字段中的文本是否正确(因为它可以采用任何一种方式)。

我很惊讶您使用的是ajax,但没有自动排序/自动刷新按钮。

从短期来看,您应该使用可排序表来避免用户在页面上感到困惑。

从长远来看,你应该采用我正在努力解决的一个非常类似的问题......

存储数据(ajax到服务器,服务器将其存储在DB中),让表始终在数据库中设置服务器端的值字段,并在页面加载时,有一个循环遍历所有的js脚本输入元素的值,并从value属性手动设置字段的值,如:

$("table :input").each(
     $(this).value($(this.attr("value")));
);