ajax请求中get和post区别,Ajax中的get和post两种请求方式的异同

Ajax中的GET和POST请求各有适用的场景。GET请求将参数附加到URL中,适合传递小量数据,且不安全,可见于浏览器历史记录;POST请求将数据放在HTTP主体中,适合传递大量数据,更安全。当需要隐藏参数或传输大量数据时,应使用POST。此外,GET请求有长度限制,而POST理论上无限制。在实际应用中,根据数据安全性和大小选择合适的请求方式。
摘要由CSDN通过智能技术生成

Ajax 中经常用到 get 和 post 请求,那么什么时候用 get 请求,什么时候用 post 方式请求呢? 在回答前先要了解 get 和 post 的区别。

一个在 url 中,一个在虚拟载体里

get 是把参数数据队列加到提交表单的 ACTION 属性所指的 URL 中,值和表单内各个字段一一对应,在 URL 中可以看到。post 是通过 HTTP post 机制,将表单内各个字段与其内容放置在 HTML HEADER 内一起传送到 ACTION 属性所指的 URL 地址。用户看不到这个过程。

获取参数

对于 get 方式,服务器端用 Request.QueryString 获取变量的值,对于 post 方式,服务器端用 Request.Form 获取提交的数据。两种方式的参数都可以用 Request 来获得。

传输数据大小

get 传送的数据量较小,不能大于 2KB。post 传送的数据量较大,一般被默认为不受限制。但理论上,因服务器的不同而异。

安全方面

get 安全性低,post 安全性较高。

参数列表

跟 是一样的,也就是说,method 为 get 时 action 页面后边带的参数列表会被忽视;而 跟 是不一样的。

另外,get 请求有如下特性:它会将数据添加到 URL 中,通过这种方式传递到服务器,通常利用一个问号?代表 URL 地址的结尾与数据参数的开端,后面的参数每一个数据参数以 “名称=值” 的形式出现,参数与参数之间利用一个连接符&来区分。post 请求有如下特性:数据是放在 HTTP 主体中的,其组织方式不只一种,有&连接方式,也有分割符方式,可隐藏参数,传递大批数据,比较方便。

总结

当我们要传送一个较大的数据文件时,需要用 post。当传递的值只需用参数方式 (这个值<=2KB) 的时候,用 get 方式即可。举例说明:发送数据 username=张三

GET 方式, 浏览器键入 http://localhost?username=张三

GET /?username=%E5%BC%A0%E4%B8%89 HTTP/1.1

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,

application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, /

Accept-Language: zh-cn

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)

Host: localhost

Connection: Keep-Alive

POST 方式:

POST / HTTP/1.1

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,

application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, /

Accept-Language: zh-cn

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)

Host: localhost

Content-Length: 28

Connection: Keep-Alive

username=%E5%BC%A0%E4%B8%89

比较以上,可以发现 get 方式把表单内容放在前面的请求头中,而 post 则把这些内容放在请求的主体中了, 同时 post 中把请求的 Content-Type 头设置为 application/x-www-form-urlencoded,而发送的正文都是一样的, 可以这样来构造一个表单提交正文:

encodeURIComponent(arg1)=encodeURIComponent(value1)&encodeURIComponent(arg2)=encodeURIComponent(value2)&...

GET 方式

1

2

3

4

var postContent ="name=" + encodeURIComponent("xiaocheng") +

"&email=" + encodeURIComponent("xiaochengf_21@yahoo.com.cn");

xmlhttp.open("GET", "somepage" + "?" + postContent, true);

xmlhttp.send(null);

POST 方式1

2

3

4

5

6

var postContent ="name=" + encodeURIComponent("xiaocheng") +

"&email=" + encodeURIComponent("xiaochengf_21@yahoo.com.cn");

xmlhttp.open("POST", "somepage", true);

xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

xmlhttp.send(postContent);

参考:http://www.javaeye.com/topic/148033

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值