创建一个XHR对象

var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

或者写成try/catch形式

try{
var xmlhttp = new XMLHttpRequest();
}catch(e){
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

初始化请求   open()

xmlhttp.open("POST","ajax_test.php",true);
xmlhttp.open("GET","ajax_test.php",true);

设置请求的HTTP头信息   setRequestHeader()   注:必须在open()后调用。

//用POST方法提交请求时,设置编码类型
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//提交COOKIE
xmlhttp.setRequestHeader("COOKIE","cookiename=cookievalue");
//提交XML
xmlhttp.setRequestHeader("Content-Type","text/xml");

发送请求   send()

xmlhttp.send()

指定请求状态改变时的事件句柄处理   onreadystatechange

xmlhttp.onreadystatechange = function(){
//code
}

获取当前请求状态   readyState对象

  0(未初始化)-对象已经创建,但未调用open方法初始化;

  1(初始化)-对象已经初始化,但未调用send方法;

  2(发送数据)-send方法已经被调用,但是HTTP状态和HTTP头未知;

  3(数据传送中)-已经开始接收数据,但由于响应数据和HTTP头信息不全,这时尝试获取数据会出现错误;

  4(完成)-数据接收完毕。

if(xmlhttp.readyState == 4){
//code
}

返回当前请求的HTTP状态码   status属性

if(xmlhttp.status == 200){
//code
}

从返回信息中获取指定的HTTP头

xmlhttp.getResponseHeader("property")

获取返回信息的所有HTTP头   getAllResponseHeaders()

xmlhttp.getAllResponseHeaders()

取得返回的数据

xmlhttp.responseText;
//XML
xmlhttp.responseXML;

取消当前请求

xmlhttp.abort();

最终版本

//创建XHR对象
try{
var xmlhttp = new XMLHttpRequest();
}catch(e){
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//初始化请求
xmlhttp.open("POST","ajax_test.php",true);
//设置请求的HTTP头信息
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//指定请求状态改变时的事件句柄处理
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
//获取返回信息的所有HTTP头
alert(xmlhttp.getAllResponseHeaders());
//取得返回的数据
alert(xmlhttp.responseText);
alert(xmlhttp.responseXML);
}
}
//发送请求
xmlhttp.send();

最新文章

  1. 01-C#入门(分支控制语句)
  2. 学习SQLite之路(三)
  3. css sprite
  4. private成员变量真的私有吗?(用指针刨他祖坟)
  5. mac安装软件管家homebrew
  6. LightOJ1191 Bar Codes(DP)
  7. hdu 3123 GCC
  8. python3中字典的copy
  9. Windows Server2012上使用Nginx做文件服务器
  10. 【Android Developers Training】 1. 创建一个Android项目工程
  11. [2017-07-18]logstash配置示例
  12. asp.net mvc项目实记-开启伪静态-Bundle压缩css,js
  13. Java 并发编程实践基础 读书笔记: 第二章 构建线程安全应用程序
  14. nyoj 阶乘0
  15. 复活广州.net俱乐部
  16. 通过 Azure Pipelines 实现持续集成之docker容器化及自动化部署
  17. 重构——与设计模式的恋情
  18. ubuntu 18.04下character_set_server设置为utf8
  19. 《Python》网络编程之黏包
  20. Linux用户名、用户组的相关命令

热门文章

  1. 【IdentityServer4文档】- 使用客户端凭据保护 API
  2. this & super
  3. PXE Centos7和Centos6
  4. "数学口袋精灵"bug
  5. 3dContactPointAnnotationTool开发日志(三二)
  6. 安装php先行库
  7. 【c】线性表
  8. 解决sublime install package连不上的问题
  9. [LeetCode] Climbing Sairs
  10. asp.net下使用Cookie保存登录信息