目录

1、XMLHttpRequest   (xhr)

2、使用xhr发起GET无参请求

3、使用xhr发起GET有参请求

4、使用xhr发起POST请求


学到了xhr发起GET和POST请求,在此记录一下

1、XMLHttpRequest   (xhr)

XMLHttpRequest(简称xhr)是浏览器提供的JavaScript对象,通过它,可以 请求服务器上的数据资源

在jQuery中封装的AJAX函数,就是基于xhr,然后封装出jq中的ajax,然后就可以调用出get、post、ajax()三个方法

在原生中实际上真正用到的,是XMLHttpRequest这个对象

2、使用xhr发起GET无参请求

四个步骤:

①:创建 xhr对象

     //1、创建一个 xhr 的对象let xhr = new XMLHttpRequest()

②:调用 xhr的open()函数(open中传递两个参数,参数一是GET/POST请求方式,参数二是请求的URL地址)

     //2、调用xhr中的open()函数,创建一个Ajax的请求xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks')

③:调用 xhr.send()函数

     //3、调用xhr的send函数,发起请求xhr.send()

④:监听 xhr.onreadystatechange事件

     //4、监听 onreadystatechange 事件xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {  //固定写法//数据获取成功,获取服务器响应的数据 console.log(xhr.responseText)}}

xhr发起GET请求的完整代码

 <script>//1、创建一个 xhr 的对象let xhr = new XMLHttpRequest()//2、调用xhr中的open()函数,创建一个Ajax的请求xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks')//3、调用xhr的send函数,发起请求xhr.send()//4、监听 onreadystatechange 事件xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {  //固定写法//数据获取成功,获取服务器响应的数据 console.log(xhr.responseText)}}</script>

xhr 对象的 readyState 属性

XHR对象中的 readyState 属性,用来表示 当前Ajax请求所处的状态

每个Ajax请求必然处于以下状态的一个:

状态 描述
0 UNSENT xhr对象已被创建,但未调用open方法
1 OPENED open()方法已经被调用
2 HEADERS_RECEIVED send()方法已被调用,响应头也已经被接收
3 LOADING 数据接收中,此时 response 属性中已经包含部分数据
4 DONE Ajax请求完成,这意味着数据传输已经彻底 完成失败

3、使用xhr发起GET有参请求

使用 xhr对象发起带参数的请求,只需要在 调用open()方法期间,为URL地址指定参数即可

代码示例

xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks?id=1')

这里在URL后用 ? 进行连接参数,用键值对的方式,=号左边的是键,右边是值,其余与无参GET一致

这种在URL地址后拼接的参数?+参数 叫做 查询字符串

如果有多个参数传递,参数与参数之间使用 & 符号连接

 let xhr = new XMLHttpRequest()//不带参数的URL地址xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks')//带一个参数的URL地址xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks?id=1')//带二个参数的URL地址xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks?id=1&bookname=西游记')

4、使用xhr发起POST请求

步骤(五步):

①、创建 xhr 对象

        //1、创建xhr的对象let xhr = new XMLHttpRequest()

②、调用 xhr.open() 函数

        //2、调用open函数('请求类型','url')xhr.open('POST', 'http://www.liulongbin.top:3006/api/addbook')

③、xhr.setRequestHeader 设置 Content-Type 属性(固定写法)

Content-Type必须写在open()的下面,且语句是固定的

        //3、设置 Content-Type属性(固定写法)xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

④、调用 xhr.send()函数,同时指定要发送的数据

        //4、调用send函数xhr.send('bookname=落日听风&author=我我我&publisher=个人出版社')

⑤、监听 xhr.onreadystatechange事件

        //5、监听事件xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {console.log(xhr.responseText)}}

⑥、完整的POST请求

    <script>//1、创建xhr的对象let xhr = new XMLHttpRequest()//2、调用open函数('请求类型','url')xhr.open('POST', 'http://www.liulongbin.top:3006/api/addbook')//3、设置 Content-Type属性(固定写法)xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')//4、调用send函数xhr.send('bookname=落日听风&author=我我我&publisher=个人出版社')//5、监听事件xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {console.log(xhr.responseText)}}</script>

JS原生:XMLHttpRequest发送GETPOST请求相关推荐

  1. 原生html如何发送网络请求,原生JS向服务器发送GET请求

    原生JS向服务器发送GET请求 使用Jquery可以很方便的进行GET与POST请求,但是在开发由于一些特殊原因只能使用原生JS进行开发,向服务器发送请求经常会遇见的些问题,本文主要讲解如何使用原生J ...

  2. 原声ajax发送post请求,原生JS实现ajax 发送post请求

    1. [代码]原生JS实现ajax 发送post请求 var oStr = ''; var postData = {}; var oAjax = null; //post提交的数据 postData ...

  3. JavaWeb 第6章 Ajax 与 JQuery 任务1:使用原生 JavaScript 发送 Ajax请求

    JavaWeb 应用设计及实战 目录 上一章  下一章 上一个任务/上一节       下一个任务/下一节 实例链接  点我 目录 任务1  使用原生 JavaScript 发送 Ajax 请求 6. ...

  4. 原生php ajax post_使用原生ajax发送post请求完整案例

    搜索热词 使用ajax发送数据实现前后台的交互,我想是web开发最基础的技能了.近来dz开发因为不兼容jquery,所以只能使用原生js发送数据,不想还遇到很多问题.在这里分析总结一下.先来一个使用a ...

  5. 【JavaScript】使用XMLHttpRequest发送网络请求

    在前端的开发中,有时候没有一些库的支持,如jQuery,Axios.那么就只能使用js提供的原生的方法来发送请求.在这里记录一下我的使用 var url = "userInfo.do?p=4 ...

  6. JS(HTTP页面)发送HTTPS请求、同源策略

    今天遇到一个必须在前端HTTP页面发送HTTPS请求的功能,有点小尴尬,这个跨域问题,也没啥好的解决方式,我网上查了一下,也没啥好的方式! 后来总结了一下,有两种方式: 1.a标签 <a hre ...

  7. php通过js发送请求数据,使用原生javascript发送ajax请求数据的步骤

    注:请求地址是自己的项目地址,请自行更改.这只是一个简单的原生XMLHttpRequst的使用,之后会发如何封装原生ajax实现jequery的ajax 第一步:创建xhr对象.const xhr = ...

  8. 原生js ajax请求 post,原生js实现ajax 发送post请求

    2019独角兽企业重金招聘Python工程师标准>>> var postData = { "name1": "value1", "n ...

  9. js原生ajax跨域请求,封装一个原生js的ajax请求,支持IE9CORS跨域请求

    前言 关于纯js的ajax请求,我之前有文章写过, https://www.haorooms.com/post/js_ajax_chun , 关于CORS跨域资源共享,我也有文章写过, https:/ ...

最新文章

  1. Boston房价PaddlePaddle测试程序
  2. 使用cqengine进行集合检索
  3. javascript学习之流程控制
  4. 计算机视觉如何给企业带来不同?
  5. pytorch 之 加载不同形式的预训练模型
  6. sort and uniq
  7. [vue] 你了解什么是高阶组件吗?可否举个例子说明下?
  8. VS Code 报错Vetur can‘t find ‘tsconfig.json‘ or ‘jsconfig.json‘的解决方法
  9. html基础开发-jQuery框架基础语法攻略(攻略一)
  10. 河南科技学院去年对口计算机分数线,河南科技学院录取分数线2021是多少分(附历年录取分数线)...
  11. 34000+技术博主齐聚,一周发文近 20,000 篇,网友:啥活动?
  12. 利用node.js以及express框架初始化服务端
  13. Makefile中创建一个以当前时间为文件夹名的文件
  14. python卡方拟合性检验_卡方拟合优度检验
  15. 电脑word文档页眉的横线怎么去掉
  16. 传统密码学(三)——转轮密码机
  17. 【coq】函数语言设计 笔记 06 -logic
  18. 搜索技巧——奇偶剪纸
  19. SugarCRM源码分析之缓存
  20. dsf5.0 有确认按钮的弹框

热门文章

  1. tf.nn.batch_normalization() 和 tf.layer.batch_normalization()
  2. Java并发——CountDownLatch
  3. Nginx关闭后,网页仍能访问(缓存问题)
  4. yolov3代码详解(七)
  5. 有源雷达与无源雷达、主动雷达与被动雷达
  6. SDN(软件定义网络)数据平面
  7. 数据库连接池之自定义连接池(mysql)
  8. Elment ui中el-table 实现表格拖拽
  9. linux归档和压缩的区别,文件的归档和压缩
  10. Pandas数据分析库(2)Python数据分析