JavaScript的XMLHttpRequest对象
ajax的核心技术是XMLHttpRequest对象,简称XHR。
//支持IE7及更高的版本
function createXML()
{
if(typeof XMLHttpReqquest!="undefined")
{
return new XMLHttpRequest();
}
else if(typeof ActiveXObject!="undefined")
{
if(typeof arguments.callee.activeXString!="string")
{
var version=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],
i,len; for(i=0,len=version.length;i<len;i++)
{
try
{
new ActiveXObject(version[i]);
arguments.callee.activeXSting=version[i];
break;
}
catch(ex)
{}
}
}
return new ActiveXObject(arguments.callee.activeXSting);
}
else
{
throw new Error(No XHR object available!);
}
}
函数首先检测原生XHR对象是否存在,如果存在就返回它的新实例。如果不存在就检测ActiveX对象。如果两个对象都不存在就抛出一个错误。
XMLHttpRequest的用法:
在使用XHR对象时,要调用的第一个方法就是open(),open()方法接受三个参数:1,要发送请求的类型(“get”,"post"等) 2,请求的url 3,表示是否发送异步请求的布尔值。
xhr.open("get","test.php",false);//open并不会真的发送请求,而只是启动了请求以备发送。
var xhr=createXHR();
xhr.open("get","test.php",false);
xhe.send(null);
惰性载入函数
没次调用createXHR()都要对浏览器支持的功能进行检查。首先检查XHR,然后检查基于activeX的XHR。还有if语句的判断,没次都要进行判断,肯定必没有if判断的代码,运行速度慢,即使只是if判断。
第一种,惰性载入的方式。
function createXHR(){
if(typeof XMLHttpRequest !=undefined){
createXHR=function(){
return new XMLHttpRequest();
};
} else if(typeof ActiveXObject!=undefined){
createXHR=function(){
if(typeof arguments.callee.activeXString!="string"){
var version=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],
i,len;
for(i=0;len=version.length,i<len;i++){
try{
new ActiveXObject(version[i]);
arguments.callee.activeXString=version[i];
break;
} catch(ex){
//skip
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
};
} else{
createXHR=function(){
throw new Error("No XHR object available.");
};
}
return createXHR();
第二种在声明函数时就指定适当的函数。
var createXHR=(function(){
if(typeof XMLHttpRequest !=undefined){
return function(){
return new XMLHttpRequest();
};
} else if(typeof ActiveXObject!=undefined){
return function(){
if(typeof arguments.callee.activeXString!="string"){
var version=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],
i,len;
for(i=0;len=version.length,i<len;i++){
try{
new ActiveXObject(version[i]);
arguments.callee.activeXString=version[i];
break;
} catch(ex){
//skip
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
};
} else{
createXHR=function(){
throw new Error("No XHR object available.");
};
}
return createXHR();
})();
JavaScript的XMLHttpRequest对象的更多相关文章
- Ajax 学习之创建XMLHttpRequest对象------Ajax的核心
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- PHP. 02®. Ajax异步处理、常见的响应状态、XMLHttpRequest对象及API、ajax的get/post方法、
异步对象 a)创建异步对象 b)设置请求的url等参数 c) 发送请求 d)注册时间 e)在注册的事件中获取返回的内容并修改页面显示的内容 布尔类型不能直接用echo输出 常见的响应状态 Ajax概 ...
- javascript XMLHttpRequest对象全面剖析
转载:http://www.jb51.net/article/23175.htm 一. 引言 异步JavaScript与XML(AJAX)是一个专用术语,用于实现在客户端脚本与服务器之间的数据交互过程 ...
- JavaScript使用浏览器内置XMLHttpRequest对象执行Ajax请求
所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject).XMLHttpRequest 用于在后台与服务器交换数据.这意味着可以在不重新加载整个 ...
- JavaScript:学习笔记(10)——XMLHttpRequest对象
JavaScript:学习笔记(10)——XMLHttpRequest对象 XHR对象 使用XMLHttpRequest (XHR)对象可以与服务器交互.您可以从URL获取数据,而无需让整个的页面刷新 ...
- [Javascript]XMLHttpRequest对象实现下载进度条
摘要 可以通过设置一个XMLHttpRequest对象的responseType属性来改变一个从服务器上返回的响应的数据类型.可用的属性值为空字符串 (默认), "arraybuffer&q ...
- javascript快速入门23--XHR—XMLHttpRequest对象
创建XMLHttpRequest对象 与之前众多DOM操作一样,创建XHR对象也具有兼容性问题:IE6及之前的版本使用ActiveXObject,IE7之后及其它浏览器使用XMLHttpRequest ...
- javascript XMLHttpRequest 对象的open() 方法参数说明
下文是从w3c上摘录下来的,其中参数 method 说明的很简短,不是很理解,所以又找了些资料作为补充.文中带括号部分. XMLHttpRequest.open() 初始化 HTTP 请求参数 语法o ...
- AJAX的核心XMLHttpRequest对象
为了实现异步通讯,提高用户体验度,而将很多旧知识(XML,DOM,JavaScript,HTML,jQuery,Css...)重新融合程一个新的知识框架.而XMLHttpRequest对象则是其中的重 ...
随机推荐
- SmartRoute之大规模消息转发集群实现
消息转发的应用场景在现实中的应用非常普遍,我们常用的IM工具也是其中之一:现有很多云平台也提供了这种基础服务,可以让APP更容易集成相关功能而不必投入相应的开发成本.对于实现这样一个简单功能并不复杂, ...
- 3891: [Usaco2014 Dec]Piggy Back
3891: [Usaco2014 Dec]Piggy Back Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 116 Solved: 92[Subm ...
- 很污的机器学习:从xhamster网站找到喜欢的片子
前言 最近迷上了看黄片(大雾).每次总是去搜索想看的片子,什么asian porn anal pussy 什么的我都不知道. 搜索着搜索着我手也累了,而且我喜欢的片子也是有一定的特征的,我不想把所有的 ...
- Robots协议
Robots协议 什么是robots? Robots文件:网站和搜索引擎之间的一个协议. 用来防止搜索引擎抓取那些我们不想被搜索引擎看到的隐私内容. Robots文件告诉蜘蛛什么是可以被查看的. ...
- 推荐三款日期选择插件(My97DatePicker+jquery.datepicker+Mobiscroll)
1.My97DatePicker 纯原生JS,专注于PC端,支持IE6+:页面上只需要引入WdatePicker.js文件,但是My97DatePicker整个目录是一个整体,最好不要破坏里面的目录结 ...
- poj 2892---Tunnel Warfare(线段树单点更新、区间合并)
题目链接 Description During the War of Resistance Against Japan, tunnel warfare was carried out extensiv ...
- Python中的日期和时间
感觉C语言作为一门编程的入门语言还是很好的,相比较之下,Python为代表的一些语言,适合很多非计算机专业的编程入门学习. Python 日期和时间 Python 程序能用很多方式处理日期和时间,转换 ...
- Servlet+jsp的分页案例
查询的分页,在web中经常用到.一般,分页要维护的信息很多,我们把这些相关的信息,分装到一个类中,PageBean.具体如下: package cn.itcast.utils; import java ...
- yii2.0框架where条件的使用
在yii框架中,where条件的使用多种多样,下面就和大家介绍几种常用有效的使用方法 1. ['type' => 1, 'status' => 2] //等于 (type = 1) AND ...
- supervisor的集中化管理搭建
1.supervisor很不错,可惜是单机版,所以上github上找了个管理工具supervisord-monitor. github地址: https://github.com/mlazarov/s ...