Ajax中GET与POST方式的选择
twocode

    当有人纠结于没有选择唯一向前时,可否想到在这个时候会有人因为众多的选择而犹豫不决呢?

    在编程中会遇到很多的这种时候,今天就说一说在使用Ajax时,到底是选择GET还是POST。

    在php中一般不会纠结于此,因为都知道GET的数据会显示到URL中,而且传递的数据大小有限,所以GET的方式用的较少,而POST的数据较大、较安全,所以运用较多。

    那现在就明白了,在php中不纠结GET和POST的方式,是因为掌握了两者的区别,所以想要使用Ajax时不纠结,就要掌握Ajax中的GET和POST的本质区别:

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

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

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

    当然,GET和POST的区别也继承了PHP中的特点,区别总结如下:

    1)GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给WEB服务器。当然在Ajax请求中,这种区别对用户是不可见的。

    2)GET方式和POST方式传递的数据在服务器端的获取也不相同。可以参照PHP中的区别理解,GET方式的数据可以用$_GET[]获取,而POST方式可以用$_POST[]获取。两种方式都可以用$_REQUEST[]来获取。

    3)GET方式对传输的数据大小有限制,通常不能大于2KB,而POST方式传递的数据量要比GET方式大得多,理论上不受限制,PHP中POST数据的大小就是php.ini中做的限制。

    4)GET方式请求的数据会被浏览器缓存起来,因此其他人就可以从浏览器的历史记录中读取到这些数据,例如账号和密码等。在某种情况下,GET方式会带来严重的安全问题。而POST方式相对来说就可以避免这些问题,但是效率上就会收到一定影响。

     以上特点和区别仅供参考,在具体使用过程中,综合考虑实际的开发现状作以取舍。

网友评论已关闭