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的同源策略有关。