javascript中的AJAX

来源:互联网 发布:青岛知行国际要交费吗 编辑:程序博客网 时间:2024/06/11 16:05

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

0 0
原创粉丝点击