最近項(xiàng)目中有個問題阅束,后臺增加了token,來進(jìn)行權(quán)限認(rèn)證躬存,so张惹,每次增刪改查需要提交的數(shù)據(jù)也變得復(fù)雜了
$.ajax({
url:serverAccessUrl+'/order/queryorderlistbypage',
type: 'POST',
dataType:"json",
async:false,
contentType:"application/json",
data: JSON.stringify(postData)
})
可是我用的是angular的$http服務(wù)啊,親岭洲!每次請求都是400宛逗,后來了解了,angular在異步提交數(shù)據(jù)的時候使用與jq不一樣的請求頭和數(shù)據(jù)序列化方式盾剩,下面我們就來一探究竟
1 http的傳輸方式
http協(xié)議是以ASCII 碼的形式傳播的雷激,說白了就是把英文字母用ascll轉(zhuǎn)為一大串對應(yīng)的數(shù)字來進(jìn)行傳播的,這個規(guī)范把請求分為三個部分
- 請求頭
- 狀態(tài)行
- 請求主體
那么為什么要這么分告私。屎暇。。驻粟。根悼。。蜀撑。挤巡。。酷麦。矿卑。。贴铜。粪摘。
-
請求頭: 我們?nèi)コ燥埌善偕梗隙ㄈヒ嬖V老板我們要吃什么飯绍坝,辣椒要不要,香菜少點(diǎn)苔悦,轩褐,,玖详,神馬的把介,那這也一樣啊,你要我的數(shù)據(jù)蟋座,肯定給我說些什么吧拗踢,咋們規(guī)定一下,你給我的數(shù)據(jù)要以何種形式傳遞向臀,好方便我解析不是巢墅?
2 jq與angular請求服務(wù)的不同
jQuery使用Content-Type: x-www-form-urlencoded和熟悉的foo=bar&baz=moe序列化來傳輸數(shù)據(jù)。AngularJS,然而君纫,使用傳輸數(shù)據(jù)Content-Type: application/json和{ "foo": "bar", "baz": "moe" }JSON序列化
jq ajax采用了與瀏覽器原生表單form提交的方式驯遇,提交的數(shù)據(jù)以鍵值對的形式序列化:key1=val1&key2=val2,,然而有時我們需要提交很復(fù)雜的數(shù)據(jù)結(jié)構(gòu)蓄髓,以及json的流行叉庐。。会喝。application/json 這個 Content-Type 陡叠,我們需要以最上面的形式改造ajax,可是angularpost自帶這些東西呀,
$http({
url:'',
method:'',
data:' '傳復(fù)雜對象
params: 以鍵值對的形式傳
})