详细讲一讲AJAX的GET/POST

一、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

时间: 2024-08-08 05:37:35

详细讲一讲AJAX的GET/POST的相关文章

经典面试题|讲一讲JVM的组成

JVM(Java 虚拟机)算是面试必问的问题的了,而但凡问 JVM 一定会问的第一个问题就是:讲一讲 JVM 的组成?那本文就注重讲一下 JVM 的组成. 首先来说 JVM 的组成分为,整体组成部分和运行时数据区组成部分,一般开发者关注的和面试官问的都是后者,但本文会详细讲解以上两个组成部分. 一.JVM 整体组成 JVM 整体组成可分为以下四个部分: 类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库接口

讲一讲什么叫阻塞非阻塞同步异步

1.讲一讲什么叫阻塞非阻塞同步异步全是用来形容方法的,形容一个方法返回值状态的. 2.io读取,网络读取,jdbc读取,这些流的操作都是bio的,都是阻塞的. 3.所以沃恩一般在处理io操作时,都采用多线程来提高bio的效率. 4.io操作,就是本地文件,网络,数据嘛嘛.所以在这三种读取数据时,都要采用多线程提高效率. 5.多线程处理阻塞方法时,只不过是避免了主线程的阻塞,但是让子线程,也就是处理每个http request的线程去发生阻塞了. 6.传统的古老的开发方式: 单线程执行阻塞方法->

用C语言讲一讲位运算 入门级(详细图解)

   1.   程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作. 2.  与运算:只有前后两个运算数都是 1 的时候结果才是1. 3.  或运算:有1位为1,结果便为1. 4.  异或:不相同则为1. 5.  取反运算:将1变为0,将0变为1. 6.  移位运算:左移则乘2,右移则除2.如果超出边界,则舍弃.

详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()

一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,是可选参数.而其中,服务器返回数据的格式其实是字符串形势,并不是我们想要的json数据格式,在此引用只是为了对比说明. 1 $.get("data.php",$("#firstName.val()")

详细解读Jquery各Ajax函数

$.get(),$.post(),$.ajax(),$.getJSON() 一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表,callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,是可选参数. 而其中,服务器返回数据的格式其实是字符串形势,并不是我们想要的json数据格式,在此引用只是为了对比说明 $.get("data.php",$("#firstName

【OpenJudge 2.6-1775】讲一讲背包问题(一)【背包DP】

1775:采药 描述 辰辰是个很有潜能.天资聪颖的孩子,他的梦想是称为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到个到处都是草药的山洞里对他说:"孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大." 如果你是辰辰,你能完成这个任务吗? 输入 输入的第一行有两个整数T(1 <=

让菜鸡讲一讲费用流(EK)

让我再讲一个故事吧. 又有一些小精灵要准备从银月城(S)迁徙到Nibel山(T). 这两个地方之间的道路构成了一个网络. 每个道路都有它自己的容量,这决定了每天有多少小精灵可以同时从这儿通过. 和上一篇不同的是,由于上次迁徙的规模很大, 吸引了其它一些种族的注意, 这次每条道路都会有一些人/兽人/哥布林/...向精灵们征收过路费, 现在精灵们想知道,在花费最小的情况下,它们迁徙的速度最大是多少只每天. 费用流=最小费用最大流 在要求流最大的情况下要求费用最小,好像原来的isap已经派不上用场了呢

让菜鸡讲一讲网络流(isap)

让我先讲一个故事吧. 一些小精灵要准备从银月城(S)迁徙到Nibel山(T). 这两个地方之间的道路构成了一个网络. 每个道路都有它自己的容量,这决定了每天有多少小精灵可以同时从这儿通过. 现在它们想知道,它们迁徙的速度最大是多少只每天. 这就是一道红果果的最大流问题. 在建图时,我们把每条边拆成2条, 它们方向相反,和原来那条边方向相同的边的容量还是原来的容量, 而另一条边的容量就设成0. 当我们要修改剩余容量的时候, 把正方向的边的容量减少,把反方向的边的容量增加, 就可以很方便的修改它了.

好好讲一讲,到底什么是Java高级架构师!

一. 什么是架构师 曾经有这么个段子: 甲:我已经应聘到一家中型软件公司了,今天上班的时候,全公司的人都来欢迎我. 乙:羡慕ing,都什么人来了? 甲:CEO.COO.CTO.All of 程序员,还有会计.司机都来了. 乙:哇,他们太重视你了,人才啊,这么多人迎接你! 甲:没有啊,就一个人! 乙:靠,#%¥$%... 很多的创业公司,一人身兼数职的情形还是很常见的.至少,我是经历过的,一个人包办了所有的开发过程,连测试我都做了,绝对的一条龙,但是经常踩钢丝.骑独轮车总会有失足的时候,结果有一次