1
如果div包含表單字段,那麼修改div容器的innerHTML對http請求負載的影響是什麼?使用innerHTML修改html元素 - 對httprequest的影響
這是first.html
<html>
<body>
<script type="text/javascript">
function changeDropdown(){
document.getElementById('divId').innerHTML="";
var options = "<select name='suffix' id='suffix'></select>";
document.getElementById('divId').innerHTML=options;
}
</script>
<br><br>
<p>testing http header issue</p>
<a href="javascript:changeDropdown()">Change dropdown</a>
<form name="test" action="second.html" method="post">
<table align="center">
<tr>
<td>
<label for="name">Name</label>
</td>
<td>
<input type="text" name="name"/>
</td>
</tr>
<tr>
<td>
<label for="suffix">Suffix</label>
</td>
<td>
<div id="divId">
<select name="suffix" id="suffix">
<option value="Mr" selected=selected>Mr</option>
<option value="Mrs" selected=selected>Mrs</option>
<option value="Ms" selected=selected>Ms</option>
</select>
</div>
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="submit"</td>
</tr>
</table>
</form>
</body>
如果我在兩個字段中輸入值,並點擊提交,這是我在Chrome的請求字段看到了價值。 (網絡 - >標題)
**Request Payload**
name=Batman&suffix=Mr
現在再次打開first.html。這次點擊「更改下拉列表」鏈接。這將刪除所有選項。現在輸入一個名稱,然後點擊提交。
這是Chrome的頭
**Request Payload**
name=Batman
參數 「後綴」 從HTTP消失的值(?)PARAMS名單。我已經明確地使用innerHTML將完整的select元素添加回表單。但是由於某種原因沒有得到承認。
有趣的是,如果我向選擇字段添加一個空選項,它會被拾取。 即改變javascript函數
document.getElementById('divId').innerHTML="";
var options = "<select name='suffix' id='suffix'><option value=''></option></select>";
document.getElementById('divId').innerHTML=options;
如果有人知道爲什麼會這樣,我能做些什麼來解決這個問題,而無需添加如上虛擬選項,請不要共享。謝謝!
那麼,在你刪除當前內容並給它一個_blank_下拉的情況下,它應該發佈什麼? Chrome的行爲正確,正如我所預期的那樣。你試圖做的是倒退的東西似乎= D – Tejs
innerHTML有一些表單域的問題。一些瀏覽器(不記得哪些),如果select元素添加了innerHTML,則不會顯示任何選項。 JavaScript庫(如jQuery)將爲您處理這些問題。你真的應該使用一個。 – Andre
@Tejs ..我期待的請求對象將具有名稱「後綴」,但值爲空的參數。我試圖做的是......這個頁面最初是由一個struts表單bean填充的。可以說後綴= Mr。現在,如果我點擊更改參數並點擊提交,我期望的是,struts動作表單將後綴重置爲空。但實際發生的是,操作表單在請求中查找名爲「後綴」的param,並且找不到它。所以它保留了舊的價值 - 這不是我想要的。 – RKodakandla