Ajax 入门之 GET 与 POST 的不同处详解

 更新时间:2017年02月15日 09:10:03   作者:tk-canday  
这篇文章主要介绍了Ajax 入门之 GET 与 POST 的不同处详解,需要的朋友可以参考下

在之前的随笔中,本着怀旧的态度总结了一篇 兼容不同浏览器 建立XHR对象的方法:

  在建立好XHR对象之后,客户端需要做的就是,将数据以某种方式传递到服务器,以获得相应的响应,在这里,  Ajax技术总结的第二季,我将重点阐述 提交数据的两种方式。

  在这之前需要了解一下我们的HTTP传输协议:

HTTP 的工作方式是客户机与服务器之间的请求-应答协议。

举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。而想要基于HTTP协议进行数据传输,必然要用到两种请求方式.

两种 HTTP 请求方法:GET 和 POST

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

  • GET - 从指定的资源请求数据。
  • POST - 向指定的资源提交要被处理的数据

  这是W3C上对GRT与POST的使用场景描述,从字面上来理解,就是: GET是用来从服务器获取数据的,POST是用来向服务器传送数据的

这一点,我们从提交路径与数据的URL中就可以看出来:

  可以用来指向URL的属性有:

1. 表单中的 action;

2. a 标签中的 href

3. img script 中的 src 属性(此属性不受“ 同源策略 ”限制,可以利用来进行“跨域”,我想近期总结一片关于跨域的问题,在这里先挖个坑)

  这里,我们讲一讲form表单提交中他们的不同

一 、Ajax的表单提交中,get 使用 open()函数来提交数据,其中,数据以 URL? key & value 的形式拼接在URL后面:

xhr.open('get','xxx.php?name=tom & age=18');
xhr.send(null);

  在浏览器的URL中是这样的:

get 提交 URL

这里可以看出:GET是把参数数据队列加到提交表单的action属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。ID的url长度是有限制的,当url过长时会自动截取超长字符。这样就容易引发一个问题:当传递的参数过多,导致url过长时,url自动截取超长字符,最终传递参数部分获取不到。这也限制了GET传送的数据大小一般不能超过2KB;

  而且,从URL截图中可以看出: GET安全性非常低,当通过GET方法提交数据时,用户名和密码将出现在URL上。如果:

- 登陆页面可以被浏览器缓存;
- 其他人可以访问客户的这台机器。

那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,GET方法会带来严重的安全性问题。

并不是说GET方法没有优点,在速度测试中,get提交的速度是POST方式的数十倍。

二 、Ajax的表单提交中,POST 在 open()函数中只需要提供URL,由send()函数提交数据:  

//获取form数据
var formDom = document.querySelector('form');
var formData = new FormData(formDom);
//发送数据
xhr.open('post',formDom.action);
xhr.send(formData);

POST是:通过HTTPPOST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到action属性所指的URL地址。用户看不到这个过程。安全性较高

 POST传送的数据量较大,一般被默认为不受限制。可以用这段demo中FormData对象的方式传递图片,富文本等文件,这是get所做不到的。

总结一下,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",

实质上,GET和POST只是发送机制不同,并不是一个取一个发!

总之,这两种表单提交方式并没有优劣之分,只有不同的适应场景,这需要我们日常工作中去根据需求把握。

后面,我将总结一下,在浏览器与服务器之间的交互中,路径的几种不同书写方法。

以上所述是小编给大家介绍的Ajax 入门之 GET 与 POST 的不同处详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 不使用XMLHttpRequest对象实现Ajax效果的方法小结

    不使用XMLHttpRequest对象实现Ajax效果的方法小结

    这篇文章主要介绍了不使用XMLHttpRequest对象实现Ajax效果的方法,结合具体实例形式分析了三种不使用XMLHttpRequest对象实现Ajax功能的相关实现技巧与操作注意事项,需要的朋友可以参考下
    2019-07-07
  • AjaxSubmit()提交file文件

    AjaxSubmit()提交file文件

    这篇文章主要介绍了AjaxSubmit()提交file文件的实例讲解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • jquery1.8版本使用ajax实现微信调用出现的问题分析及解决办法

    jquery1.8版本使用ajax实现微信调用出现的问题分析及解决办法

    这篇文章主要介绍了jquery1.8版本使用ajax实现微信调用出现的问题分析及解决办法的相关资料,需要的朋友可以参考下
    2015-11-11
  • 使用$.getJSON实现跨域ajax请求示例代码

    使用$.getJSON实现跨域ajax请求示例代码

    getJSON调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数,下面有个不错的示例,需要的朋友可以参考下
    2013-11-11
  • django使用ajax post数据出现403错误如何解决

    django使用ajax post数据出现403错误如何解决

    在django中,使用jquery ajax post数据,会出现403的错误,该如何解决呢?下面由脚本之家小编帮大家解决django使用ajax post数据出现403错误,需要的朋友可以参考下
    2015-09-09
  • AJAX 简介及入门实例

    AJAX 简介及入门实例

    最近在学校参加暑期实习,参与的是一个社交网站项目,学长那边分配给的任务是前端开发,需要学习AJAX技术。
    2009-07-07
  • 利用ajax+php实现商品价格计算

    利用ajax+php实现商品价格计算

    这篇文章主要为大家详细介绍了利用ajax+php实现商品价格计算,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • Django使用AJAX向服务器发起请求的操作方法

    Django使用AJAX向服务器发起请求的操作方法

    AJAX是一种用于创建交互式网页应用程序的技术,它允许在不重新加载整个页面的情况下向服务器发送和接收数据,本文给大家介绍Django使用AJAX向服务器发起请求的操作方法,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • 原生ajax和iframe框架实现图片文件上传的两种方式

    原生ajax和iframe框架实现图片文件上传的两种方式

    这篇文章主要为大家详细介绍了原生ajax和iframe框架实现图片文件上传的两种方式,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Jquery Ajax请求方法小结(值得收藏)

    Jquery Ajax请求方法小结(值得收藏)

    本文给大家介绍jquery ajax请求方法小结,jquery作为一个轻量级的js框架,能快速的开发js应用,并且在一定程度上改变了我们写js代码的习惯,对jquery ajax请求感兴趣的朋友参考下
    2015-11-11

最新评论