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. 02_SAE中创建数据表

    Step1:进入新浪云应用数据库点击应用名称,进入到该应用管理界面,在数据库服务中点击“共享型MySQL”: 开启MySQL服务,使用PHPMyAdmin管理数据库,进入MySQL数据库管理界面: S ...

  2. [转载]pythonnet

    python与c#的交互模块pythonnethttp://www.cnblogs.com/tester-zhenghan/p/5406521.html [集成IronPython] 添加CLR对象到 ...

  3. Angular动态组件

    一.主页面: app.component.html: <button (click)="load();">动态</button> 2<div #dom ...

  4. Windows系统清除占用的串口号列表批处理

    蛋疼总是无缘无故被占用 @echo off reg query "HKLM\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" / ...

  5. Oraclecloud创建时没有上传公钥的解决办法

    https://blogs.oracle.com/cloud-infrastructure/recovering-opc-user-ssh-key-on-oracle-cloud-infrastruc ...

  6. 浅谈python闭包及装饰器

    1. 什么是闭包: 闭包 是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变 ...

  7. go语言中type的几种使用

    type是go语法里的重要而且常用的关键字,type绝不只是对应于C/C++中的typedef.搞清楚type的使用,就容易理解go语言中的核心概念struct.interface.函数等的使用.以下 ...

  8. 【多线程与并发】:Java中的锁

    锁的概念 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁可以防止多个线程同时访问共享资源(但有些锁可以允许多个线程并发的访问共享资源,如读写锁). 在JDK1.5之前,Java是通过sync ...

  9. Linux中进程的几种状态

    linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态. 只有在该状 ...

  10. 算法的时间复杂度O

    一.时间复杂度 在进行算法分析时,语句总的执行次数 T(n) 是关于问题的规模n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 的数量级,算法的时间复杂度,也就是算法的时间度量,记作 ...