js-JavaScript高级程序设计学习笔记17
第21章 AJAX
AJAX技术的核心是XMLHttpRequest对象。可以使用XHR对象取得新数据,然后通过DOM将新数据插入到页面中。无需刷新页面即可从服务器获得数据。
1、XHR对象。
如果只想支持IE7+,那么可以直接使用XHR构造函数。
如果支持IE6:
function createXHR(){
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
else
{// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
throw new Error("No XHR object available.");
}
}
1、XHR的用法
使用XHR对象,要调用的第一个方法是open()
xhr.open("get","example.php",false);调用这个方法不会真正发送请求,只是启动一个请求以备发送。
要发送特定的请求,必须调用send()方法
xhr.open("get","example.php",false);
xhr.send(null);这次请求是同步的,JS代码会等到服务器响应之后再继续执行。接收到响应后,响应的数据会自动填充XHR对象的属性。
①responseText:作为响应主体被返回的文本;
②responseXML:如果相应的内容类型是text/xml或application/xml,这个属性将保存包含着相应数据的XML DOM文档;非XML数据,值为null。
③status:相应的HTTP状态。
④statusText:HTTP状态说明。
在接收到响应后,第一步是检查status属性,以确响应已经成功返回。
以上为发送同步请求,异步请求能让JS继续执行而不必等待响应。此时可以检测XHR对象的readyState属性,表示请求/相应过程的当前活动阶段。
①0:未初始化。尚未调用open()方法;
②1:启动。已open(),未send();
③2:发送。已send(),未收到响应;
④3:接收。已收到部分响应数据;
⑤:完成。可以使用了。
readyState改变时都会触发一次readystatechange事件。必须在调用open()之前指定onreadystatechange事件处理程序才能保证跨浏览器兼容性。
2、HTTP头部信息
使用setRequestHeader()方法可以设置自定义请求头部信息,必须在open()后和send()前调用。
getResponseHeader()和getAllResponseHeaders()可获取头部信息。
3、GET请求。
GET是最常见的请求类型,常用于向服务器查询某些信息。查询字符串必须经过encodeURIComponent()进行正确的编码。
4、POST请求。
通常向服务器发送应该被保存的数据。
第一步open()初始化,第二部向send()传入某些数据。模仿表单提交P577.
POST请求比GET请求消耗资源。
2、XHR 2级
1、FormData。序列化表单。
xhr.open("post","postexample.php",true);
var form=document.getElementById("user-info");
xhr.send(new FormData(form));2、超时设定
timeout属性。请求在多少毫秒后终止并触发timeout事件。(IE8+)
3、overrideMimeType()方法
重写响应的MIME类型。在send()前调用。
3、进度事件。
Progress Events规范,六个进度事件
①loadstart②progress③error④abort⑤load⑥loadend。每个请求都是从出发loadstart开始,接下来是一个或多个progress,然后出发error/abort/load中的一个,然后出发loadend结束。
progress事件,可用来做进度指示器。onprogress事件处理程序接收一个event对象,target属性是XHR对象,额外三个属性:lengthComputable——进度信息是否可用、position——已接收字节数、totalSize——根据响应头部确定的预期字节数。必须在open()之前添加onprogress事件处理程序。
js-JavaScript高级程序设计学习笔记17的更多相关文章
- JavaScript高级程序设计---学习笔记(一)
今天,2017.3.17开始利用课余时间仔细学习<JavaScript高级程序设计>,将需要掌握的知识点记录下来,争取把书里的所有代码敲一遍并掌握. 1.标识符命名最好是第一个字母小写,剩 ...
- javascript高级程序设计学习笔记
javascript高级程序设计,当枕头书已经好久了~zz 现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...
- javascript 高级程序设计 学习笔记
<!--<script> // 异步请求封装 IE6即以上浏览器 // ajax(url,fnSucc,selectID,fnFaild) //url 请求地址 //fnSucc 异 ...
- JavaScript高级程序设计---学习笔记(二)
面向对象程序设计1.属性类型.定义多属性.读取属性特性对象的属性在创建时都带有一些特征值,JavaScript通过这些特征值来定义它们的行为.这些特性是为了实现JavaScript引擎用的,因此不能直 ...
- JavaScript高级程序设计学习笔记--DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口). Document类型 文档的子节点 虽然DOM标准规定Document节点的子节点可以是DocumentType,Ele ...
- Javascript高级程序设计学习笔记一
看完w3school的javascript的概念,有点基础,开始红皮书的路程,今晚总结前二章的心得. 第一章:javascript简介 重点是javascript的实现是由 ECMAScript(核心 ...
- JavaScript高级程序设计学习笔记--面向对象的程序设计(二)-- 继承
相关文章: 面向对象的程序设计(一) — 创建对象 http://www.cnblogs.com/blackwood/archive/2013/04/24/3039523.html 继承 继承是OO语 ...
- JavaScript高级程序设计学习笔记第十章--DOM
1.DOM:文档对象模型,是针对 HTML 和 XML 文档的一个 API(应用程序编程接口). 2.DOM 可以将任何 HTML 或 XML 文档描绘成一个由多层节点构成的结构. 3.文档节点是每个 ...
- JavaScript高级程序设计学习笔记第一章
作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...
- JavaScript高级程序设计学习笔记之事件
1.事件流 事件流描述的是从页面中接收事件的顺序. 事件冒泡 IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播 ...
随机推荐
- 在ESXi 5.x之间冷迁移虚机
试过几种不同的方法都不成功, 直接用VMware vCenter Converter Standalone Client迁移, 会出现task中的source与job中的source不一致的情况, 使 ...
- Java核心技术点之反射
1. 概述 Java 反射是可以让我们在运行时获取类的方法.属性.父类.接口等类的内部信息的机制.也就是说,反射本质上是一个“反着来”的过程.我们通过new创建一个类的实例时,实际上是由Java虚拟机 ...
- PHPExcel
1.PHPExcel类中读取Excel文件相关函数和使用方法 插件官网:http://phpexcel.codeplex.com/ <?php require_once 'Classes/PHP ...
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)(转)
1.安装Vim和Vim基本插件首先安装好Vim和Vim的基本插件.这些使用apt-get安装即可:lingd@ubuntu:~/arm$sudo apt-get install vim vim-scr ...
- Python之线程、进程和协程
python之线程.进程和协程 目录: 引言 一.线程 1.1 普通的多线程 1.2 自定义线程类 1.3 线程锁 1.3.1 未使用锁 1.3.2 普通锁Lock和RLock 1.3.3 信号量(S ...
- 前后端分离工具之ftl-server
文章来源:https://www.npmjs.com/package/ftl-server 源代码可参考:https://github.com/szmtcjm/ftl-server/blob/mast ...
- Nutch搜索引擎系列(目录)
下面是Nutch搜索系列目录,希望对研究Nutch的同学有所帮助. 目录安排: 1)Nutch搜索引擎(第1期)_ Nutch简介及安装[下载] 2)Nutch搜索引擎(第2期)_ Solr简介及安装 ...
- unix环境高级编程基础知识之第一篇
陆陆续续看完了圣经第一章,熟悉了unix的整个编程流程,c语言的用处在这里得到伸张. 从unix的体系结构,原来操作系统包括内核及一些其他软件,我们常常误称为linux内核为操作系统,这俨然成为一种共 ...
- 我开源了一个ios应用,你们拿去随便玩
今天开源一个ios应用,自己写的,你们拿去随便玩.地址是: https://github.com/huijimuhe/prankPro 光拿来玩不理清个来龙去脉玩的也不开心是吧,那我就给你们摆摆来龙去 ...
- test2
package com.analysis.code; import org.apache.commons.lang3.StringUtils; import java.io.*; import jav ...