您的位置:首页 > Web前端 > JavaScript

javascript中的AJAX

2016-03-08 19:39 387 查看
Ajax 技术的核心是XMLHttpRequest 对象(简称XHR),这是由微软首先引入的一个特性,其他

浏览器提供商后来都提供了相同的实现。

IE7+、Firefox、Opera、Chrome 和Safari 都支持原生的XHR 对象

在IE的老浏览器中可能会遇到三种不同版本的XHR 对象,即MSXML2.XMLHttp MSXML2.XMLHttp.3.0 和MXSML2.XMLHttp.6.0

要跨浏览器的话可以用下面的代码:

function createXHR(){//生成XHR对象
if(typeof XMLHttpRequest=="function"){
return new XMLHttpRequest();//原生的xhr对象
}esle if(typeof ActiveXObject!="undefined"){//ie7-系列
var version=['MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp'];
for(var i=0;i<version.length;i++){
try{
return new ActiveXObject(version[i]);
}catch(e){
//跳过
}
}
}
else{
throw new Error("not support the createXMR method");
}
}
function ajax(method,url,data,async){
/*
method:表示是以get还是post方法请求
ulr:请求的url
data:发送的数据
async:同步还是异步,fasle表示同步,true表示异步
*/
var xhr=createXHR();

/*如果是以get方式发送数据的话,数据是加载在url后面,以name=value的方式,如: http://www.vip.com/0308?tagId=manjian298&f=oper_2  */

if(method=="get"){//get方式请求数据
url=url+"?"+data;
}
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){
alert(xhr.responseText);//这里可以执行回调函数
} else {
alert("Request was unsuccessful: " + xhr.status);
}
}
};
xhr.open(method,url, async);//
//如果是post请求的话,还有加上下面这句
if(methhod=="post"){
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(data);
}else{
xhr.send(null);//如果是以get方式请求的话,则为null;
}
}


注意:只能向同一个域中使用相同端口和协议的URL 发送请求。如果URL 与启动请求的页面有任何差别,都会引发安全错误。这与web的同源策略有关。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript