• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >AJAX > 解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题

解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
MLHttpRequest 对象是AJAX功能的核心,要开发AJAX程序必须从了解XMLHttpRequest 对象开始。

了解XMLHttpRequest 对象就先从创建XMLHttpRequest 对象开始,在不同的浏览器中创建XMLHttpRequest 对象使用不同的方法:

先看看IE创建XMLHttpRequest 对象的方法(方法1):

  var xmlhttp=ActiveXobject("Msxml12.XMLHTTP");//较新的IE版本创建Msxml12.XMLHTTP对象

  var xmlhttp=ActiveXobject("Microsoft.XMLHTTP");//较老的IE版本创建Microsoft.XMLHTTP对象

而 Mozilla、Opera、Safari 和大部分非IE的浏览器都使用下面这种方法(方法2)创建XMLHttpRequest 对象:

  var xmlhttp=new XMLHttpRequest();

注意:实际上Internet Explorer 使用了一个名为 XMLHttp 的对象,而不是 XMLHttpRequest 对象,而 Mozilla、Opera、Safari 和 大部分非 Microsoft 浏览器都使用的是后者(下文统称 XMLHttpRequest 对象)。IE7开始也开始使用XMLHttpRequest 对象了。

因此我们需要创建一个能兼容多浏览器的XMLHTTPRequest对象:

第一种方法:

  var xmlhttp=false;//创建一个新变量并赋值false,使用false作为判断条件说明还没有创建XMLHTTPRequest对象

  function CreateXMLHttp(){

  try{

   xmlhttp=new XMLHttpRequest();//尝试创建 XMLHttpRequest 对象,除 IE 外的浏览器都支持这个方法。

}catch(e){

  try{

  xmlhttp=ActiveXobject("Msxml12.XMLHTTP");//使用较新版本的 IE 创建 IE 兼容的对象(Msxml2.XMLHTTP)。

}catch(e){

  try{

  xmlhttp=ActiveXobject("Microsoft.XMLHTTP");//使用较老版本的 IE 创建 IE 兼容的对象(Microsoft.XMLHTTP)。

}catch(failed){

    xmlhttp=false;//如果失败了还保持false

}

}

}

return xmlhttp;

}

判断是否成功的例子:

if(!xmlhttp){

 创建xmlhttp失败

}else{

 创建xmlhttp成功

}

第二种方法:
 if(typeof(XMLHttpRequest)=="undefined" && window.ActiveXObject){

  function XMLHttpRequest(){

  var xmlhttp_arr=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

  var xmlhttp;

  for(i=0;i<xmlhttp_arr.length;i++){

   if(xmlhttp=new ActiveXObject(xmlhttp_arr[i]))

   break;

}

  return xmlhttp;

}

}

//这个是除了IE之外的浏览器创建XMLHttpRequest对象

var xmlhttp=new XMLHttpRequest();

创建xmlhttp成功后,然后再来看看它的一些属性和方法吧,还有最重要的onreadystatechange事件句柄

 方法:

 open() 初始化http请求参数,包括URL和http方法,但是不发送请求;

 abort() 取消当前响应,关闭连接并断开所有网络未结束的活动;

 getAllResponseHeaders() 把http响应头部作为未解析字符串返回;

 getResponseHeaders) 返回指定的http响应头的值;

 send() 发送http请求使用传递给open()方法的参数,以及传个该方法的可选请求体;

 setResponseHeader() 向一个打开但没有发送的请求设置或添加一个Http请求。

 属性:

 readyState 说明http请求的状态;(有5个状态分别是

 0 表示没有初始化;

 1 表示读取中

 2 表示已读取

 3 交互中(接受中)

 4 完成

)

 responseText 说明为服务器接收到得响应体,如果没有接收到数据就返回空字符串;

 responseXML 说明对请求的回应 解析为XML并用document对象返回;

 status 说明http请求的状态;

 statusText 说明http请求状态不是以数字形式而是用名称;

 onreadystatechange 是readySate状态改变时调用事件的函数。

下面是一个发送请求数据并返回结果的xmlhttpRequest对象;

 生成一个XMLHTTPRequest对象

 var xmlhttp=CreatXMLHttp();
 xmlhttp.open("get","http://www.weikejianghu.com/jaryle",true);
 xmlhttp.onReadyStateChange=getresult;
//怎么告诉XMLHttpRequest 对象状态变化时让谁来处理这个变化呢用到二种方法:一种是匿名方法xmlhttp.onReadyStateChange=function(){处理变化的代码}
另一种方法:指定方法:xmlhttp.onReadyStateChange=getresult;

    function getresult(){处理变化的代码}
 xmlhttp.send();
 function getresult(){
 if(xmlhttp.readyState==4){ //当readyState的状态等于4时表示接收到数据
 if(xmlhttp.status==200){ //这个时候就需要用到status属性,即由服务器返回的 HTTP 状态代码。 xmlhttp.status 等于200时表示传输过程完整没有错误
 alert(xmlhttp.responseText);
}
}
 }

注意:所以我们应该按照上面的流程来记忆:创建XMLHttpRequest 对象 -> 指定发送地址及发送方法 -> 指定状态变化处理方法 -> 发送请求,请求发送后状态变化了就会自动调用指定的处理方法。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11如何解决Ajax访问不断变化的session的值不一致以及HTTP协议中的GET、POST的区别
  • 2017-05-11ajax中文乱码问题解决方案
  • 2017-05-11AJAX初级聊天室代码
  • 2017-05-11SpringMVC+Ajax+拼接html字符串实例代码
  • 2017-05-11ajax 登录功能简单实现(未连接数据库)
  • 2017-05-11AJAX简单异步通信实例分析
  • 2017-05-11Ajax方式实现定期更新页面某块内容的方法
  • 2017-05-11Servlet+Ajax实现智能搜索框智能提示功能
  • 2017-05-11ajax同步验证单号是否存在的方法
  • 2017-05-11使用jQuery简化Ajax开发

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ajax实现输入框文字改变展示下拉列表的效果示例
    • 揭开AJAX神秘的面纱(AJAX个人学习笔记)第1/5页
    • Ajax 汇总以及初步评价
    • 有关Ajax中get和post的使用问题
    • Ajax基础教程之封装(三)
    • Ajax 对象 包含post和get两种异步传输方式
    • 无限分级和tree结构数据增删改【附DEMO下载】
    • Ajax中浏览器的缓存问题解决方法
    • 用ajax实现读博客rss示例代码
    • ajax技术制作得在线歌词搜索功能

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有