表單提交
四個用於表單提交的屬性
- action:數據發送的位置
- method:數據發送的方式
- enctype:數據編碼的方式
- target:展示結果的位置
action
定義了數據發送的位置,它的值必須是一個有效的URL,假如沒有填寫,默認值爲當前網頁的URL
method
規定了發送數據的HTTP方法(例如GET,POST)
GET:數據將作爲URL的參數,數據將以鍵值對的方式拼接到action的URL上
POST:數據將在請求體中,表單中的數據將被放在HTTP請求的主體中
enctype
定義發送數據的編碼方式
當數據在請求體中發送,也就是method設置爲POST時,數據需要根據enctype進行編碼
支持三種編碼方式
application/x-www-form-urlencoded(默認)
最常見的編碼方式,以鍵值對的方式進行編碼
multipart/form-data
二進制數據提交(文件上傳)
text/plain(不常用)
target
規定提交表單後,接受服務器返回內容的位置
_self(默認):當前頁面加載結果
_blank:新開窗口中加載結果
_parent:父級窗口中加載結果,如果沒有父級就與_self一致
_top:頂級窗口中加載結果
_iframename:指定的frame中進行加載
提交按鈕的提交屬性
提交按鈕的如下屬性將會覆蓋form元素上對應的屬性值
- formaction
- formmethod
- formmenctype
- formtarget
表單提交的方式
提交按鈕(submit類型的button,或input)
隱式提交
HTMLFormElement.submit()
另外表單提交後,默認是當前頁面接收返回的數據,因此頁面會發生刷新,假如我們不希望頁面進行刷新,那麼可以結合iframe無刷新提交表單
<form action=".login" method="GET" target="result"></form>
<iframe id="frame" name="result" style="display:none"></iframe>
可以在頁面中添加一個不顯示的iframe,將表單的target指向iframe,這樣的話就有iframe接收服務的的返回值並進行展示,然後我們監聽iframe的load事件,可以拿到服務端的返回值並進行處理
var forma=document.getElementById("aaa");
forma.addEventListener('load',function(event){
try{
var result=JSON.parse(frames.contentWindow.document.body.textContent)
}
catch(ex){
}
})