佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Ajax 入門之 GET 與 POST 的不同處詳解

Ajax 入門之 GET 與 POST 的不同處詳解

熱門標(biāo)簽:科大訊飛語(yǔ)音識(shí)別系統(tǒng) Linux服務(wù)器 Mysql連接數(shù)設(shè)置 團(tuán)購(gòu)網(wǎng)站 電子圍欄 銀行業(yè)務(wù) 服務(wù)器配置 阿里云

在之前的隨筆中,本著懷舊的態(tài)度總結(jié)了一篇 兼容不同瀏覽器 建立XHR對(duì)象的方法:

  在建立好XHR對(duì)象之后,客戶端需要做的就是,將數(shù)據(jù)以某種方式傳遞到服務(wù)器,以獲得相應(yīng)的響應(yīng),在這里,  Ajax技術(shù)總結(jié)的第二季,我將重點(diǎn)闡述 提交數(shù)據(jù)的兩種方式。

  在這之前需要了解一下我們的HTTP傳輸協(xié)議:

HTTP 的工作方式是客戶機(jī)與服務(wù)器之間的請(qǐng)求-應(yīng)答協(xié)議。

舉例:客戶端(瀏覽器)向服務(wù)器提交 HTTP 請(qǐng)求;服務(wù)器向客戶端返回響應(yīng)。響應(yīng)包含關(guān)于請(qǐng)求的狀態(tài)信息以及可能被請(qǐng)求的內(nèi)容。而想要基于HTTP協(xié)議進(jìn)行數(shù)據(jù)傳輸,必然要用到兩種請(qǐng)求方式.

兩種 HTTP 請(qǐng)求方法:GET 和 POST

在客戶機(jī)和服務(wù)器之間進(jìn)行請(qǐng)求-響應(yīng)時(shí),兩種最常被用到的方法是:GET 和 POST。

  • GET - 從指定的資源請(qǐng)求數(shù)據(jù)。
  • POST - 向指定的資源提交要被處理的數(shù)據(jù)

  這是W3C上對(duì)GRT與POST的使用場(chǎng)景描述,從字面上來(lái)理解,就是: GET是用來(lái)從服務(wù)器獲取數(shù)據(jù)的,POST是用來(lái)向服務(wù)器傳送數(shù)據(jù)的

這一點(diǎn),我們從提交路徑與數(shù)據(jù)的URL中就可以看出來(lái):

  可以用來(lái)指向URL的屬性有:

1. 表單中的 action;

2. a 標(biāo)簽中的 href

3. img script 中的 src 屬性(此屬性不受“ 同源策略 ”限制,可以利用來(lái)進(jìn)行“跨域”,我想近期總結(jié)一片關(guān)于跨域的問(wèn)題,在這里先挖個(gè)坑)

  這里,我們講一講form表單提交中他們的不同

一 、Ajax的表單提交中,get 使用 open()函數(shù)來(lái)提交數(shù)據(jù),其中,數(shù)據(jù)以 URL? key value 的形式拼接在URL后面:

xhr.open('get','xxx.php?name=tom  age=18');
xhr.send(null);

  在瀏覽器的URL中是這樣的:

get 提交 URL

這里可以看出:GET是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的action屬性所指的URL中,值和表單內(nèi)各個(gè)字段一一對(duì)應(yīng),在URL中可以看到。ID的url長(zhǎng)度是有限制的,當(dāng)url過(guò)長(zhǎng)時(shí)會(huì)自動(dòng)截取超長(zhǎng)字符。這樣就容易引發(fā)一個(gè)問(wèn)題:當(dāng)傳遞的參數(shù)過(guò)多,導(dǎo)致url過(guò)長(zhǎng)時(shí),url自動(dòng)截取超長(zhǎng)字符,最終傳遞參數(shù)部分獲取不到。這也限制了GET傳送的數(shù)據(jù)大小一般不能超過(guò)2KB;

  而且,從URL截圖中可以看出: GET安全性非常低,當(dāng)通過(guò)GET方法提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在URL上。如果:

- 登陸頁(yè)面可以被瀏覽器緩存;
- 其他人可以訪問(wèn)客戶的這臺(tái)機(jī)器。

那么,別人即可以從瀏覽器的歷史記錄中,讀取到此客戶的賬號(hào)和密碼。所以,在某些情況下,GET方法會(huì)帶來(lái)嚴(yán)重的安全性問(wèn)題。

并不是說(shuō)GET方法沒(méi)有優(yōu)點(diǎn),在速度測(cè)試中,get提交的速度是POST方式的數(shù)十倍。

二 、Ajax的表單提交中,POST 在 open()函數(shù)中只需要提供URL,由send()函數(shù)提交數(shù)據(jù):  

//獲取form數(shù)據(jù)
var formDom = document.querySelector('form');
var formData = new FormData(formDom);
//發(fā)送數(shù)據(jù)
xhr.open('post',formDom.action);
xhr.send(formData);

POST是:通過(guò)HTTPPOST機(jī)制,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到action屬性所指的URL地址。用戶看不到這個(gè)過(guò)程。安全性較高

 POST傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制??梢杂眠@段demo中FormData對(duì)象的方式傳遞圖片,富文本等文件,這是get所做不到的。

總結(jié)一下,Get是向服務(wù)器發(fā)索取數(shù)據(jù)的一種請(qǐng)求,而Post是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求,在FORM(表單)中,Method默認(rèn)為"GET",

實(shí)質(zhì)上,GET和POST只是發(fā)送機(jī)制不同,并不是一個(gè)取一個(gè)發(fā)!

總之,這兩種表單提交方式并沒(méi)有優(yōu)劣之分,只有不同的適應(yīng)場(chǎng)景,這需要我們?nèi)粘9ぷ髦腥ジ鶕?jù)需求把握。

后面,我將總結(jié)一下,在瀏覽器與服務(wù)器之間的交互中,路徑的幾種不同書寫方法。

以上所述是小編給大家介紹的Ajax 入門之 GET 與 POST 的不同處詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法總結(jié)
  • ajax中g(shù)et和post的說(shuō)明及使用與區(qū)別
  • Jquery AJAX POST與GET之間的區(qū)別
  • jquery中g(shù)et,post和ajax方法的使用小結(jié)
  • jQuery Ajax之$.get()方法和$.post()方法
  • jQuery中Ajax的get、post等方法詳解
  • jquery 讀取頁(yè)面load get post ajax 四種方式代碼寫法
  • 原生 JS Ajax,GET和POST 請(qǐng)求實(shí)例代碼

標(biāo)簽:棗莊 蚌埠 衡水 萍鄉(xiāng) 廣元 江蘇 大理 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ajax 入門之 GET 與 POST 的不同處詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    富顺县| 道真| 南澳县| 板桥市| 金坛市| 桑植县| 金阳县| 乐昌市| 和田县| 常德市| 长葛市| 商城县| 文昌市| 陇南市| 肇源县| 梁河县| 商河县| 龙泉市| 旺苍县| 贵阳市| 满洲里市| 论坛| 沙雅县| 宜川县| 汤原县| 花莲县| 迁西县| 山丹县| 盐池县| 广安市| 瑞安市| 乡宁县| 澳门| 汉川市| 正定县| 博客| 盐边县| 沈阳市| 桐乡市| 新沂市| 宜城市|