国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【譯】通過JavaScript發送表單

qylost / 849人閱讀

摘要:能異步地發送任意數據的技術稱為,表示異步的和。若你使用,使用發送表單還會影響同源策略,并導致內容被發送到一個無法訪問的中。但要手動發送二進制數據的話,還有很多額外工作要做。用來發送二進制是很直接的,使用方法就好了。

系列文章說明

原文

在[發送表單數據]()一文中,HTML表單可以聲明式地發送一個HTTP請求。但表單也可以用JavaScript來準備一個HTTP請求。本文將探索如何做到這點。

表單,不只是表單

隨著開放式Web應用的出現,現在提供HTML表單、而不是文字表單供用戶填寫的做法,已經越發普遍了。而越來越多的開發者也獲得了數據傳輸的控制權。

獲得對數據傳輸的控制權

標準的HTML表單提交操作會加載數據發送到的URL,這就意味著瀏覽器的窗口中會進行整個頁面的重新加載。而如果避免了頁面的重新加載,就會避免頁面的閃爍和網絡延遲,進而提供更順暢的用戶體驗。

在許多現代的UI設計中,HTML表單只是用來收集用戶的輸入。當用戶要發送數據時,Web應用會進行控制,并在后臺異步地發送數據,只更新UI中需要更改的部分。

能異步地發送任意數據的技術稱為AJAX,表示“異步的JavaScript和XML”。

和傳統表單處理的不同

AJAX使用了XMLHttpRequest(XHR)DOM對象,它可以建立HTTP請求、發送請求并處理結果。

注意: 老的AJAX技術可能不是用XMLHttpRequest。比如JSONP和eval()函數結合起來使用。雖然該方法可行,但不推薦使用它,因為其存在嚴重的安全問題。所以除非為了兼容那些特別老舊、不支持XMLHttpRequest或JSON的瀏覽器,還是避免使用該技術

由于歷史原因,XMLHttpRequest本是設計用來獲取和發送交換格式為XML的數據的。但現在JSON取代了XML,有著更普遍的使用。

不過XML和JSON都不符合作為表單數據請求的編碼。表單數據(application/x-www-form-urlencoded)是用于構造鍵值對的URL編碼列表的,若是要傳輸二進制數據,HTTP請求會被重塑為 multipart/form-data

若你能掌控前端(運行在瀏覽器上的代碼)和后端(運行在服務器上的代碼),你就能發送JSON或XML、并隨心所欲地處理它們。

但如果你使用的是第三方服務,這就沒那么容易了,因為某些服務只接受表單數據。當然也有使用表單數據處理起來更方便的情況,比如數據是鍵值對或二進制數據時,用現成的后端工具就能處理它們、不需要額外的代碼。

那么,具體該如何發送數據呢?

發送表單數據

目前有三種方式來發送表單數據,既有老舊的技術、也有新特性FormData對象,接下來就來深入了解下它們。

在隱藏的iframe中構建DOM

發送表單數據最古老的方法,是用DOM API建立一個表單,然后發送數據到一個隱藏的