在某些表單數據被修改後(通過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