JavaScript:学习笔记(10)——XMLHttpRequest对象

XHR对象

  使用XMLHttpRequest (XHR)对象可以与服务器交互。您可以从URL获取数据,而无需让整个的页面刷新。这使得Web页面可以只更新页面的局部,而不影响用户的操作。XMLHttpRequest在 Ajax 编程中被大量使用

  XMLHttpRequest 支持同步和异步通信。但是,一般来说,出于性能原因,异步请求应优先于同步请求同步请求阻止代码的执行,这会导致屏幕上出现“冻结”和无响应的用户体验

属性和方法

  在使用XHR之前,我们先大体了解一下XHR的属性和方法。

  

请求模型

  请求的步骤,首先构造一个XHR对象,然后,初始化一个请求,这里我们需要填写三个重要的参数:

  • 请求方法(method):GET/POST/OPTIONS....
  • 请求路径(url):服务器的处理路径
  • 是否异步(async):为false表示同步请求,默认为异步。

  最后使用send方法发送请求。

1、请求数据

  send方法发送请求数据,可以是以下几种:

  1. xhr.send(null);
  2. // xhr.send('string');
  3. // xhr.send(new Blob());
  4. // xhr.send(new Int8Array());
  5. // xhr.send(document);

2、处理响应结果

  xhr.readyState表示请求的状态码,为4表示请求完成,当请求完成后,xhr.status表示响应状态,为200表示响应成功。最后就可以使用xhr.response,来查看相应信息

3、异步请求

  对于异步请求,发送请求并不会影响后续代码运行。当请求结束后会调用对应的事件处理函数来处理响应结果,诸如onload、onabort、onerror..查看更多

  1. var xhr = new XMLHttpRequest();
  2. xhr.open("GET", "/bar/foo.txt", true);
  3. xhr.onload = function (e) {
  4. if (xhr.readyState === 4) {
  5. if (xhr.status === 200) {
  6. console.log(xhr.responseText);
  7. } else {
  8. console.error(xhr.statusText);
  9. }
  10. }
  11. };
  12. xhr.onerror = function (e) {
  13. console.error(xhr.statusText);
  14. };
  15. xhr.send(null);

4、同步请求

  同步请求的话,发送请求后在得到响应信息前会中断代码运行

  1. var request = new XMLHttpRequest();
  2. request.open('GET', 'http://www.mozilla.org/', false);
  3. request.send(null);
  4. if (request.status === 200) {
  5. console.log(request.responseText);
  6. }

参考

JavaScript:学习笔记(10)——XMLHttpRequest对象的更多相关文章

  1. JavaScript:学习笔记(9)——Promise对象

    JavaScript:学习笔记(9)——Promise对象 引入Promise Primose是异步编程的一种解决方案,比传统的解决方案回调函数和事件更加合理和强大.如下面为基于回调函数的Ajax操作 ...

  2. Javascript学习笔记——操作浏览器对象

    Javascript学习笔记 目前尝试利用javascript去对于一个浏览器对象完成一系列的访问及修改, 浏览器是网页显示.运行的平台,常用的浏览器有IE.火狐(Firefox).谷歌(Chrome ...

  3. JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  4. javascript学习笔记02--面向对象学习

    js面向对象编程 1.  javascript 是一种基于对象的编程    object-based(基于对象):遇到的所有对象都是对象2.javascript没有类class,但是有新的原型对象,习 ...

  5. JavaScript学习笔记之原型对象

    本文是学习<JavaScript高级程序设计>第六章的笔记. JS中,便于批量创建对象的三种模式: 1.工厂模式:用一个函数封装创建对象的细节,传入必要的参数,在函数内部new一个对象并返 ...

  6. JavaScript学习笔记之BOM对象

    目录 1.Window 2.Window Screen 3.Window Location 4.Window History 5.Window Navigator 浏览器对象模型(Browser Ob ...

  7. JavaScript学习笔记(10)——JavaScript语法之操作DOM

    1.页面输出用document.write()方法,但是不可以在window.onload中用,否则整个html页面将被覆盖. 2.通过javascript获取对象后,改变对象中的html内容:doc ...

  8. 1.4(JavaScript学习笔记) window对象的属性及方法

    一.window对象 window对象代表当前窗口,所有全局对象都是windows的属性, 例如document是window的属性,window.document.writer("&quo ...

  9. JavaScript学习笔记之DOM对象

    目录 1.Document 2.Element 3.Attribute 4.Event 1.Document 每个载入浏览器的 HTML 文档都会成为 Document 对象,Document 对象允 ...

随机推荐

  1. java对接微信小程序

    https://www.cnblogs.com/lyn20141231/p/11210372.html https://blog.csdn.net/sinat_29039125/article/det ...

  2. asp.net MVC 使用wifidog 协议实现wifi认证

    在网上看到的很多实现的wifidog 协议一般都是PHP 的,了解一下PHP 但是比较喜欢.net ,所以实现了简单的一个进行登录认证的功能 (好多协议中的功能目前没有实现) 1. 开发环境(vs20 ...

  3. Linux 命令集合之进程查看命令-软件安装命令-文件查找命令-主机修改命令

    1.dpkg 的使用 dpkg -s ssh 查看是否按装了ssh软件 dpkg -L ssh 查看ssh安装的关联目录结构和安装位置 dpkg -i vim.deb 本地离线安装vim编辑器 apt ...

  4. 洛谷 P3258 [JLOI2014]松鼠的新家 题解

    P3258 [JLOI2014]松鼠的新家 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他 ...

  5. 64位内核开发第十二讲,进程监视,ring3跟ring0事件同步.

    一丶同步与互斥详解,以及实现一个进程监视软件. 1.用于线程同步的 KEVENT 事件很简单分别分为 事件状态. 以及事件类别. 事件状态: 有信号 Signaled 无信号 Non-signaled ...

  6. jmeter非GUI界面常用参数详解

    压力测试或者接口自动化测试常常用到的jmeter非GUI参数,以下记录作为以后的参考 讲解:非GUI界面,压测参数讲解(欢迎加入QQ群一起讨论性能测试:537188253) -h 帮助 -n 非GUI ...

  7. MySQL数据库设置表名区分大小写

    使用Mysql的朋友有时候会遇到表名称不区分大小写的情况,导致导入数据或者备份数据库很麻烦. 如何设置Mysql数据库表名区分大小写呢,配置如下: 一.修改Mysql的配置文件my.ini my.in ...

  8. 使用flexmark将MarkDown转为HTML

    引入对应的依赖 <!-- https://mvnrepository.com/artifact/com.vladsch.flexmark/flexmark --> <dependen ...

  9. C++标准库分析总结(九)——<HashFunction、Tuple>

    一.HashFunction 当我们在使用hash table以及由它做底层的数据结构时,我们必不可少要讨论hash function,所谓的哈希函数就是产生一个数,这个数越乱越好,以至于达到避免碰撞 ...

  10. Bootstrap select 多选并获取选中的值

    代码: <!DOCTYPE html><html> <head>    <meta charset="UTF-8">    < ...