XMLHttpRequest对象
Ajax技术的核心是XMLHttpRequest对象,简称XHR。 function creatXHR() {
if(typeof arguments.callee.activeXString != 'string'){
var versions = ['MSXML2.XMLHttp.6.0','MSXML2.XMLHttp3.0','MSXML2.XMLHttp'];
for(var i=0; i < versions.length; i++){
try{
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
}catch (ex){
console.log(ex);
}
}
}
}
尽可能根据IE中可用的MSXML库的情况使用最新版本的XHR对象。 var xhr = new XMLHttpRequest();
如果不考虑IE低版本的话,这样创建即可,如果想要兼容IE早期版本,那么可以在createXHR函数中加入对原生XHR对象的支持,如下: function creatXHR() {
if(typeof XMLHttpRequest != 'undefined'){
return new XMLHttpRequest();
}else if(typeof ActiveXObject != 'undefined'){
if(typeof arguments.callee.activeXString != 'string') {
var versions = ['MSXML2.XMLHttp.6.0','MSXML2.XMLHttp'];
for (var i = 0; i < versions.length; i++) {
try {
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch (ex) {
console.log(ex);
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
}else{
throw new Error('No XHR Object available');
}
}
XHR的用法 var xhr = creatXHR();
xhr.open('get','data.php',false);
请求的URL可以是相对路径,也可以是绝对路径。调用open()方法并不会真正发送请求,而是启动一个请求以备发送。 var xhr = creatXHR();
xhr.open('get',false);
xhr.send(null);
接受到服务器的响应后,响应的数据会自动填充XHR对象的属性: var xhr = creatXHR();
xhr.open('get',false);
xhr.send(null);
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
//success
}else{
//failed
}
发送同步请求时,这样处理是没有问题的,但是如果是异步请求,我们就需要去检测XHR对象的readyState属性,该属性表示请求/响应过程的当前活动阶段。 var xhr = creatXHR();
xhr.onreadystatechange = function () {
if(xhr.readyState == 4){
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){
//deal with xhr.responseText
}else{
console.log("failed");
}
}
};
HTTP头部信息 GET请求 function addURIParam(url,name,value) {
url += (url.indexOf('?') == -1) ? '?' : '&';
url += encodeURIComponent(name) + '=' + encodeURIComponent(value);
return url;
}
addURIParam用于向URL的末尾添加查询字符串参数。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |