firefox与处理多个(重复)帖子有何不同?

时间:2011-04-22 18:28:40

标签: ajax http firefox post internet-explorer-7

我在Firefox中遇到了一个错误,当我修改了某些表单数据(通过AJAX)后,在使用重新加载按钮时,我的表单上会出现一些不同步的信息。

在IE(7)中,刷新似乎总是重新提交最初提交的数据。所以,如果我加载一个然后通过JS / AJAX修改并刷新的表单,我会看到我在第一次加载时看到的内容。

在Firefox(4)中,我倾向于(至少在这种情况下)看到更新的数据。但是,因为我忽略了更新某些表单元素,所以表单似乎重新提交了部分不正确的数据,在这种情况下可能会导致严重的混淆。

我的问题是,Firefox和IE处理重新发布的方式究竟有什么区别?是否记录在任何地方?这两种方式更标准吗?那么其他浏览器呢?

编辑:值得注意的是,Firefox似乎也只重新渲染某些元素(在我的情况下,标签的类更改,但不是输入的禁用状态)。 Firefox是否有关于刷新和重新发布时如何更新DOM的特殊规则?

我检查了FF中(重新)POST的返回,并确认它有一些异常行为。在回报的来源中,我得到了这一点:

<label id="delSheetContainer"
      title="Estimate Sheets with Schedule Activities in the past may not be deleted."
      class="">
   <input id="delSheet" name="delSheet"
      type="checkbox"
      tabindex="3"
      value="false"
      //Inserted note: this is where the disabled value would have been
      onclick="this.value=(this.value && 1); bSave=true; setBtn(this.checked);"
   />Delete Sheet
</label>

但是在浏览器(和Firebug)中,我看到一个仍然禁用的复选框。但是,标签已正确更新。任何人都可以详细说明这种行为吗? (参考赞赏!)

编辑:正如Boris所说,Firefox在刷新时保持“表单状态”。我的问题实际上是由这个事实引起的;服务器正在返回正确的东西,但Firefox仍然保持表单状态。

1 个答案:

答案 0 :(得分:1)

根据描述很难确定你在这里看到的效果,但是当你进行重新加载(而不是强制重新加载)时,Firefox会将修改后的表单输入的值保持为它们的任何值重新加载之前。

因此,如果您有一个包含此标记的页面:

<input name="x">

并且用户在“foo”中键入文本框然后重新加载,重新加载后的输入仍将包含字符串“foo”。

这适用于通过JavaScript修改其值的隐藏输入,这可能会很好地解释您观察到的行为。

确实没有标准的重载行为。