javascript中的AJAX

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值