最近项目中有个问题,后台增加了token,来进行权限认证,so,每次增删改查需要提交的数据也变得复杂了
$.ajax({
url:serverAccessUrl+'/order/queryorderlistbypage',
type: 'POST',
dataType:"json",
async:false,
contentType:"application/json",
data: JSON.stringify(postData)
})
可是我用的是angular的$http服务啊,亲!每次请求都是400,后来了解了,angular在异步提交数据的时候使用与jq不一样的请求头和数据序列化方式,下面我们就来一探究竟
1 http的传输方式
http协议是以ASCII 码的形式传播的,说白了就是把英文字母用ascll转为一大串对应的数字来进行传播的,这个规范把请求分为三个部分
- 请求头
- 状态行
- 请求主体
那么为什么要这么分。。。。。。。。。。。。。。
-
请求头: 我们去吃饭吧,肯定去要告诉老板我们要吃什么饭,辣椒要不要,香菜少点,,,,神马的,那这也一样啊,你要我的数据,肯定给我说些什么吧,咋们规定一下,你给我的数据要以何种形式传递,好方便我解析不是?
2 jq与angular请求服务的不同
jQuery使用Content-Type: x-www-form-urlencoded和熟悉的foo=bar&baz=moe序列化来传输数据。AngularJS,然而,使用传输数据Content-Type: application/json和{ "foo": "bar", "baz": "moe" }JSON序列化
jq ajax采用了与浏览器原生表单form提交的方式,提交的数据以键值对的形式序列化:key1=val1&key2=val2,,然而有时我们需要提交很复杂的数据结构,以及json的流行。。。application/json 这个 Content-Type ,我们需要以最上面的形式改造ajax,可是angularpost自带这些东西呀,
$http({
url:'',
method:'',
data:' '传复杂对象
params: 以键值对的形式传
})