写了这么多年代码,get post怎么回事都搞不清楚,我真是无地自容啊。。。
首先AJAX POST请求中参数以form data传递的,但其实也是以name=value&name1=value1的形式在请求体中的。
get请求:
Query String Parameters
name:mikan
address:street
post请求:
Form Data
name:mikan
address:street
post请求的Content-Type为application/x-www-form-urlencoded具体post的配置代码实现如下:
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
var postData = $jsonToQuery( opt.data );
xmlHttp.send( postData );
也就是说get,post根本没区别啊!除了get会受浏览器限制,不能太长以外。 当初实习的时候,导师就说过这一点,当时没有时间细说,之后也就没再说了。我只是不知道原来它发送的时候也是jsontoquery这种形式传递的。
但是服务端这边有个需求是不要这样传,不好处理。于是把content-type改掉了,就文本形式,json数据stringily后发送,这样服务端自己parse就可以了。
xmlHttp.setRequestHeader('Content-Type', 'text/plain;charset=utf-8');
xmlHttp.send( JSON.stringify(opt.data) );
请求头变成了
Request Payload
干了这么多年才把这个搞清楚,好惭愧啊。。
来看看这个吧。。 99%的人都理解错了HTTP中GET与POST的区别
参考链接:
记于2017年06月20日 EOF
点击评论或查看评论。