ajax - firefox 与 ie 在处理多个(重复)帖子方面究竟有何不同?

标签 ajax http firefox post internet-explorer-7

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

在IE(7)中,刷新好像总是重新提交原来提交的数据。因此,如果我加载一个表单,然后通过 JS/AJAX 修改并刷新,我会看到我在第一次加载时看到的内容。

在 Firefox (4) 中,我倾向于(至少在这种情况下)看到较新的数据。然而,由于我忽略了更新某些表单元素,该表单似乎重新提交时包含部分不正确的数据,在这种情况下可能会带来严重的困惑。

我的问题是,Firefox 和 IE 处理转发的方式到底有什么区别?它记录在任何地方吗?哪种方式更标准?其他浏览器呢?

编辑:可能值得注意的是,Firefox 似乎也只重新呈现某些元素(在我的例子中,标签的类发生了变化,但输入的禁用状态没有变化)。 Firefox 在刷新和重新发布时是否有关于如何更新 DOM 的特殊规则?

我检查了 FF 中 (re)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)中,我看到一个仍然禁用的复选框。但是,标签已正确更新。任何人都可以详细说明这种行为吗? (感谢引用!)

编辑:正如鲍里斯所解释的,Firefox 在刷新过程中保持“表单状态”。我的问题实际上是由这个事实引起的;服务器正在返回正确的内容,但 Firefox 仍然保持表单状态。

最佳答案

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

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

<input name="x">

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

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

确实没有涵盖重新加载行为的标准。

关于ajax - firefox 与 ie 在处理多个(重复)帖子方面究竟有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5758671/

相关文章:

javascript - AWS S3 : should I use POST or PUT requests to upload a file?

ajax - JSF:使用 multipart/form-data 和 AJAX 时出现奇怪的 iframe

javascript - 如何通过 ajax 加载 NodeJS SailsJS Web 应用程序的所有非静态部分?

ajax - 如何描述 Web 服务器和 Web 客户端之间的交互?

javascript - 使用 firebug 在 firefox 中调试 coffeescript

c# - 动态设置PDF文件名

ajax - 关于 Ajax 的问题

http - 我应该如何在我的 RESTful Web 服务中实现 COUNT 动词?

c# - 如何使用 https 创建 HttpListener

css - firefox min-height 属性没有被删除但被忽略了?