在某些表单数据被修改后(通过AJAX)使用重载按钮时,我遇到了Firefox中的一个错误,该错误涉及到表单上的一些不同步信息。firefox与处理多个(重复)帖子有什么不同?
在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)中,我看到一个仍然禁用的复选框。但是,标签已经正确更新。任何人都可以详细说明这种行为吗? (引用赞赏!)
编辑:正如鲍里斯解释的那样,Firefox在整个刷新过程中都保持“表单状态”。我的问题实际上是由这个事实造成的;服务器正在返回正确的东西,但Firefox仍然维持表单状态。
现在我感觉比以前更困惑了...我不得不再做更多的测试,这样我可以更清楚地理解这一点......我会在发生这种情况时进一步更新问题。 – jtpereyda 2011-04-22 19:29:00