Ajax_02之XHR发起异步请求
1、Ajax:
AJAX:Asynchronous Javascript And Xml,异步的JS和XML;
同步请求:地址栏输入URL、链接跳转、表单提交……
异步请求:使用Ajax发起,底层使用XMLHttpRequest对象;
2、XHR的创建:
var xhr=null;
if(window.XMLHttpRequest){xhr=new XMLHttpRequest();//新IE及其它}
else{xhr=new ActiveXObject('Microsoft.XMLHTTP');//老IE}
3、XMLHttpRequest对象的常用成员:
①成员属性:
readyState:int,初始值0;
0——UNSEND——请求消息未发送;1——OPENED——XHR已打开到服务器的链接;2——HEADERS_RECEIVED——XHR已经接收到响应消息起始行和头部;3——LOADING——XHR正在加载响应消息主体;4——DONE——XHR已经完成响应消息;
responseText:初始值"",readyState值为3时开始有响应消息主体文本;
responseXML:初始值null,readyState值为3时有响应消息主题内容——XML DOM树对象;
status:初始值0,保存响应状态码,readyState值为2时开始有值;
statusText:初始值"",保存响应消息原因短句,readyState值为2开始有值;
②成员事件:
onreadystatechange:每次readyState值发生改变就触发;
③成员方法:
open(method,url):打开到服务器的连接;
send():发送请求消息;
setRequestHeader(name,value):设置请求消息头部;
getAllResponseHeaders():获取所有的响应消息头部;
getResponseHeader(name):获取某个响应消息头部;
4、XHR对象发起异步请求步骤:
①创建XHR对象:
var xhr=new XMLHttpReponse();
②监听XHR就绪状态改变事件:
xhr.onreadystatechange=function(){}
③连接到服务器:
xhr.open(method,url,isAsync);
④发起请求消息:
xhr.send(data);
5、XHR发起异步的HTTP GET请求:
①创建XHR对象:
var xhr=new XMLHttpResponse();
②监听XHR就绪状态改变事件
xhr.onreadystatechange=function(){
if(xhr.readystate===4){
if(xhr.status===200){doResponse(xhr);}
else{alert("响应完成,但有问题");}
}
}
③连接到服务器
xhr.open('GET','x.php?k=v&k=v',true);
④发起请求消息
xhr.send(null);
6、XHR发起异步HTTP POST请求:
①创建XHR对象:
var xhr=new XMLHttpResponse();
②监听XHR就绪状态改变事件
xhr.onreadystatechange=function(){
if(xhr.readyState===4){
if(xhr.status===200){doResponse(xhr);}
else{alert("响应完成,但有问题");}
}
}
③连接到服务器
xhr.open('POST','x.php',true);
④修改请求消息头部
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
⑤发起请求消息
xhr.send('k=v&k=v');
Ajax_02之XHR发起异步请求的更多相关文章
- 设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的类型、URL、method、body、timestamp 等信息。
异步请求逻辑注入 工作中我们需要对异步请求的请求信息打印日志,但是又不能耦合在业务代码中打印.请设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的 ...
- 异步请求Ajax
AJAX:Asynchronous JS And XML,包括HTML.CSS.JS.DOM.XML.JSON等,客户端技术范畴.主要目标:发起异步请求/响应,实现页面内容的局部刷新,提高浏览体验:实 ...
- iOS NSURLConnection POST异步请求封装,支持转码GBK,HTTPS等
.h文件 #import <Foundation/Foundation.h> //成功的回调 typedef void(^successBlock)(id responseObj); // ...
- 如何在异步请求时设置RequestHeader
一.为何要用到setRequestHeader 通常在HTTP协议里,客户端像服务器取得某个网页的时候,必须发送一个HTTP协议的头文件,告诉服务器客户端要下载什么信息以及相关的参数.而 XMLHTT ...
- ajax----发送异步请求的步骤
1)获取(创建)Ajax对象:获取XMLHttpRequest对象2)创建请求:调用xhr的open方法3)在发送请求之前需要设置回调函数:绑定指定xhr的onreadystatechange事件4) ...
- 使用AJAX技术发送异步请求,HTTP服务端推送
使用AJAX技术发送异步请求 什么是AJAX AJAX指一步Javascript和XML(Asynchronous JavaScript And XML),它是一些列技术的组合,简单来说AJAX基于X ...
- .Net WebRequest异步请求与WebClient异步请求
很多情况下一般会使用同步方式发出请求,直到响应后再做后续的逻辑处理等,但有时候后续的逻辑处理不依赖于请求的结果或者是可以挂起等到响应后再处理,又或者是为了解决UI“假死”的现象,这时可以使用异步请求 ...
- 【SQL】在数据库中发起http请求的小改进
市面上常见的是用MSXML2.ServerXMLHTTP这个类,但这个类在发起异步请求时并不可靠,就是当send后并不一定会发出这个请求.这里推荐改用Microsoft.XMLHTTP,如果只是简单的 ...
- JavaScript 之 异步请求
一. 1.异步(async) 异步,它的孪生兄弟--同步(Synchronous),"同步模式"就是上一段的模式,后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排 ...
随机推荐
- 教你如何做Lotus Domino的应用开发
http://www.lotuschina.net/club/thread-7309-1-1.html
- BZOJ 3144 [Hnoi2013]切糕 ——网络流
[题目分析] 网络流好题! 从割的方面来考虑问题往往会得到简化. 当割掉i,j,k时,必定附近的要割在k-D到k+D上. 所以只需要建两条inf的边来强制,如果割不掉强制范围内的时候,原来的边一定会换 ...
- 丢掉慢吞吞的AVD吧,android模拟神器:Genymotion
安装图文介绍: http://padhz.com/how-to-run-android-simulator-on-pc.html; 刚好手头上有visual box,亲自试用了一下.新建了一个Gala ...
- c语言实现开灯问题
开灯问题: 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依 ...
- 解决Xcode真机测试时ineligible devices的问题
升级了Xcode到6.3,连接真机测试时,出现不能选择设备.如图: 设备系统版本是8.3的,Xcode连接其他低系统版本的设备做真机测试时就不会有这个问题. 有人说这是Xcode6.3的bug. 我的 ...
- 从零开始山寨Caffe·拾贰:IO系统(四)
消费者 回忆:生产者提供产品的接口 在第捌章,IO系统(二)中,生产者DataReader提供了外部消费接口: class DataReader { public: ......... Blockin ...
- dede 调用原图的路径
步骤:1修改include/extend.func.php 添加如下代码: //取原图地址function bigimg($str_pic){$str_houzhi=substr($str_pic,- ...
- 让/etc/profile文件修改后立即生效
方法1: 让/etc/profile文件修改后立即生效 ,可以使用如下命令: # . /etc/profile 注意: . 和 /etc/profile 有空格 方法2: 让/etc/profile ...
- Probe在性能测试中的使用方式简介
简介: Lambda Probe(以前称为Tomcat Probe)是一款实时监控和管理的Apache Tomcat实例的基本工具. Lambda Probe 是基于 Web + AJAX 的强大的免 ...
- python 中使用 global 引发了莫名其妙的问题
哪里出问题了 python 中,使用 global 会将全局变量设为本函数可用.同时,在函数内部访问变量会先本地再全局. 在嵌套函数中,使用 global 会产生不合常理的行为. 上代码: In [9 ...