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发起异步请求的更多相关文章

  1. 设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的类型、URL、method、body、timestamp 等信息。

    异步请求逻辑注入 工作中我们需要对异步请求的请求信息打印日志,但是又不能耦合在业务代码中打印.请设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的 ...

  2. 异步请求Ajax

    AJAX:Asynchronous JS And XML,包括HTML.CSS.JS.DOM.XML.JSON等,客户端技术范畴.主要目标:发起异步请求/响应,实现页面内容的局部刷新,提高浏览体验:实 ...

  3. iOS NSURLConnection POST异步请求封装,支持转码GBK,HTTPS等

    .h文件 #import <Foundation/Foundation.h> //成功的回调 typedef void(^successBlock)(id responseObj); // ...

  4. 如何在异步请求时设置RequestHeader

    一.为何要用到setRequestHeader 通常在HTTP协议里,客户端像服务器取得某个网页的时候,必须发送一个HTTP协议的头文件,告诉服务器客户端要下载什么信息以及相关的参数.而 XMLHTT ...

  5. ajax----发送异步请求的步骤

    1)获取(创建)Ajax对象:获取XMLHttpRequest对象2)创建请求:调用xhr的open方法3)在发送请求之前需要设置回调函数:绑定指定xhr的onreadystatechange事件4) ...

  6. 使用AJAX技术发送异步请求,HTTP服务端推送

    使用AJAX技术发送异步请求 什么是AJAX AJAX指一步Javascript和XML(Asynchronous JavaScript And XML),它是一些列技术的组合,简单来说AJAX基于X ...

  7. .Net WebRequest异步请求与WebClient异步请求

    很多情况下一般会使用同步方式发出请求,直到响应后再做后续的逻辑处理等,但有时候后续的逻辑处理不依赖于请求的结果或者是可以挂起等到响应后再处理,又或者是为了解决UI“假死”的现象,这时可以使用异步请求 ...

  8. 【SQL】在数据库中发起http请求的小改进

    市面上常见的是用MSXML2.ServerXMLHTTP这个类,但这个类在发起异步请求时并不可靠,就是当send后并不一定会发出这个请求.这里推荐改用Microsoft.XMLHTTP,如果只是简单的 ...

  9. JavaScript 之 异步请求

    一. 1.异步(async) 异步,它的孪生兄弟--同步(Synchronous),"同步模式"就是上一段的模式,后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排 ...

随机推荐

  1. Server.MapPath()

    ./当前目录/网站主目录../上层目录~/网站虚拟目录 如果当前的网站目录为E:\wwwroot   应用程序虚拟目录为E:\wwwroot\company 浏览的页面路径为E:\wwwroot\co ...

  2. Maven打包生成可运行bat/sh脚本文件

    利用Maven的appassembler-maven-plugin插件,就可以实现自动打包可运行的脚本,还可以跨平台.   <plugin>      <groupId>org ...

  3. 转载:安装ie driver和chrome driver

    很多同学在使用webdriver的时候总是忘了安装ie driver和chrome driver, 因此在这里简单介绍一下这2个driver的安装方式. IE driver 在新版本的webdrive ...

  4. java function retry wrapper

    import java.util.concurrent.Callable; /** * Created by huahui.yang on 1/29/16. */ public class Retry ...

  5. [翻译] ORMLite document -- How to Use Part (二)

    前言 此文档翻译于第一次学习 ORMLite 框架,如果发现当中有什么不对的地方,请指正.若翻译与原文档出现任何的不相符,请以原文档为准.原则上建议学习原英文文档. ----------------- ...

  6. CentOS 6.4下编译安装MySQL 5.6.14

    概述: CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server ...

  7. 无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

    SQLite部署-无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块 近期刚使用SQLite,主要引用的是System.Data.SQLite.dll这个dll,在部署到测试 ...

  8. mysql获取自增长插入行的ID

    insert into {14}.SEGMENT(CODE_STARTPOINTID,CODE_STARTFIR,CODE_TYPE_START,CODE_ENDPOINTID,CODE_ENDFIR ...

  9. PHP基础面试题

    1.PHP的意思? 答:PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页 2.谈谈asp,php,jsp的优缺点? 答:ASP全名Active Server Pag ...

  10. 05.DOM

    DOM基础 什么是DOM 标签元素节点浏览器支持情况  火狐支持最好 谷歌其次 ie最差 尤其是ie6-8DOM节点节点分为:元素节点和文本节点 测试节点的类型用nodeTypenodeType 为3 ...