Dom(十二) 表單提交

表單提交

四個用於表單提交的屬性

  • 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){

            }
        })

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章