码迷,mamicode.com
首页 > Web开发 > 详细

详细讲一讲AJAX的GET/POST

时间:2015-11-18 00:39:53      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

一、POST/GET之我所见

其实对于他们的区别,想必互联网上已经传遍了,无论大家怎么理解,对于我而言,我觉得,它们只有一个区别。

就是一个有form,一个没有。

怎么理解了,就是POST上传就类似我们在界面上的一个<form>,按下提交按钮后把form内的东西都传递到服务器去,当然你也可以不传递任何东西,如果在ajax的send时不传递任何东西,此时是没有form的,但但凡send里面有了数据,就自然有了form(包括abc=123这样的以及new FormData()),因此,他们的区别仅仅是是否有form,至于传输数据大小其实没有什么区别的,一般说的1024字节的GET限制也不存在的(受限于服务器的最大传输,.NET一般是4M),只是GET不方便传输文件等数据,所以一般用于获取信息,需要注意的是,由于GET有安全性和幂等性,可能造成GET方式的执行时并不每次都提交到服务器,而是使用浏览器缓存(具体和浏览器设置相关)。

二、通信数据

再来说说他们的具体传递流程

客户端(cookie)→服务器(cookie)→客户端(cookie)

上面的一个流程就是通常的传递,其中cookie不但包含的普通的数据,还包含了sessionId(特殊设置下不包含,可以分离,然后附加在地址上),但这个sessionId并不保存,而是浏览器一旦关闭就清除,而每完成一次这样的过程,服务器和浏览器就断开了,下一次请求时重新连接,而此时服务器怎么知道还是同一个用户在访问呢,就是读取这个sessionId,服务器是有保存的,用户第一次访问时服务器分配给用户后,服务器也保存一份,保存时间默认是20分钟,如果再次期间再次访问,保存时间往后延迟。

三、Session处理

不管是POST还是GET都发送了sessionId到服务器,但可能偶尔服务器无法获取到session,主要是ashx页面,因为它默认不处理session,如果需要,则请加上接口

 public class ajax : IHttpHandler,System.Web.SessionState.IRequiresSessionState
 {
 }

四、最后说说FROM

前面说了GET和POST就是有无FROM的区别,而不是Session,那我来说说FORM吧,其实FORM里面就是传统页面里面的<form>标签,它主要是保存页面的数据,用于还原页面和提交数据用途,主要就是把form里面的input的value传递到服务器,因此包含普通的input按钮和文本以及文件(文件需要有name属性),同时.NET等服务器控件和页面内容(ViewState)为了在返回服务器时能获取页面当前的输入状态,把数据也保存到了FORM里面,如果查看代码,会看到诸如

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTI0MTIwNDkwOWRkqKPcG1XuXZzRRu6RJ29YmbSvowNSKXFypkaJO+W5kmo=" />

的东西,这个就是隐藏的一个input,就是用于存储页面上的服务器控件信息的(value内容就是普通的Base64String字符串),当然,如果页面上没有服务器控件,也可能不存在这个东东了(实际上还是有,会保存其他东东)。

因此一旦提交页面,就相当于把当前有用的东西都提交到服务器去了,然后服务器分析自己的__VIEWSTATE来重建一个页面CLASS,然后恢复其页面的控件状态,然后处理input的东东,最后返回给浏览器HTML代码。

对于GET方式,是没有FORM的,但对于POST,其实也没有,但,可以附加,如果发送了诸如abc=123&efg=456的数据,会自动添加一个form,然后把数据装进去发走,当然也可以自己发送一个虚拟的form,只需要new FormData()

new FormData().append(name, object);

然后send这个对象即可,这样的好处是可以发送文件了(input.files[0]从input中获取,后台直接request.Files就可以收取了),否则就和GET没啥区别了。

不过要注意form的编码格式,否则可能错误的。

详见我的另一篇笔记:http://www.cnblogs.com/21tcy/p/4814673.html

详细讲一讲AJAX的GET/POST

标签:

原文地址:http://www.cnblogs.com/21tcy/p/4973202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!