Ajax, 选择GET还是POST?

开发 前端 后端
本文向您介绍开发Ajax程序是对信息传输方法GET和POST中的选择,GET的目的就如同其名字一样是用于获取信息的;POST方法应该用于你需要更新服务器信息的地方。

当我们不通过重新加载页面,用Ajax访问服务器的时候,有两个选择可以将请求信息传送到服务器上。这两个选择分别是GET和POST。

在把请求信息发送到服务器上以加载新的页面时,这两个选择有两个不同之处。***个区别是你是请求了信息的一小部分而不是整个页面。第二个区别也是最明显的区别是由于Ajax请求不会出现在地址栏中,因此当发送请求时,在访问者的屏幕上是看不出什么异同的。使用GET生成调用不会暴露域和它们的值,使用POST也不会暴露。因此,我们要怎样在这两者之间作出选择呢?

初学者可能犯的一个错误是对于大多数的调用都使用GET命令,仅仅因为这一命令相对而言更容易编写。GET与POST调用之间最显著的差异是当发出加载新页面请求时,GET调用对于同样数量的数据有着相同的限制。唯一的区别是你处理的少量的Ajax请求数据,而你并不想通过这种长度运行的限制来完成页面的加载。初学者可能会在少数情况下,如他们确实需要传送更多信息时,使用POST。

当我们有大量数据要传送时***的办法是一次发出多个只传递少量信息的Ajax调用时。如果你正用一个Ajax调用发送大量数据,那么***是结束这种做法,因为这样做并不能节约时间。

因此,需要传送大量数据能成为我们在GET和POST之间犹豫不决的理由吗?这两个方法都是为不同的目的而设计的,两者的不同也在于其使用目的。这一说法不仅适用于GET和POST的使用,也适用于其他的方法。

GET的目的就如同其名字一样是用于获取信息的。它旨在显示出页面上你要阅读的信息。浏览器会缓冲GET请求的执行结果,如果同样的GET请求再次发出,浏览器就会显示缓冲的结果而不是重新运行整个请求。这***程不同于浏览器的处理过程,但是它是有意设计成这样以使GET调用更有效率。GET调用会检索要显示在页面中的数据,数据不会在服务器上被更改,因此重新请求相同数据的时候会得到相同的结果。

POST方法应该用于你需要更新服务器信息的地方。如某调用要更改保存在服务器上的数据,而从两个同样的POST调用返回的结果或许会完全不同,因为第二个POST调用的值与***个的值不相同,这是由于***个调用已经更新了其中一些值。POST调用通常会从服务器上获取响应而不是保持前一个响应的缓冲。

因此,不要用数据的量来决定是要选择GET还是POST,而应该按照目的在两者间作出选择。如果调用是要检索服务器上的数据则使用GET。如果要检索的值会随时间和更新进程的改变而改变则要在GET调用中添加一个当前时间参数,这样后面的调用才不会使用先前的不正确的缓冲。如果调用是向服务器上发送任意数据,就可以使用POST。

事实上,我们不应该不仅仅只将这个标准作为选择怎样使用GET和POST调用的标准,在处理页面处理形式的时候也可以将它作为取舍这两个调用的标准。

【编辑推荐】

  1. Ajax模式之缓存控制器模式
  2. AJAX推送与拉取方式的比较
  3. 流行的AJAX框架对比:jQuery,Mootools,Dojo,Ext JS
  4. 详谈基于JSON的高级AJAX开发技术
  5. 7个免费强大的Ajax文件管理器
责任编辑:佚名 来源: 网络转载
相关推荐

2011-06-08 11:02:14

GetPost

2015-01-05 10:07:24

HTTPGETPOST

2023-08-07 09:25:06

GETPOSTHTTP请求

2013-01-15 10:50:42

2013-01-05 13:21:44

ASP.NETHttpHandlerHttpModule

2009-09-10 17:37:01

C# get post

2014-07-24 10:00:21

2013-07-04 14:54:24

Android

2009-09-10 16:41:13

C# get post

2013-05-30 13:30:00

代码效率程序员

2023-11-09 09:13:48

GraphQLAPI 架构

2009-07-29 16:53:52

ASP.NET Get

2015-10-27 11:06:51

PHPGETPOST

2015-08-06 13:33:22

PHPGETPOST

2022-08-03 07:04:56

GETHTTPPOST

2012-05-14 10:18:54

jQuery

2019-02-14 19:00:13

2009-07-02 15:36:18

JSP参数传递get post方法

2011-08-02 13:35:41

iOS开发 Get Post

2015-08-19 10:13:53

DaasVDI
点赞
收藏

51CTO技术栈公众号