03月05, 2013

js版ajax请求代码

jquery为我们集成了很方便的ajax,有同步和异步,一般来说我们都是异步请求,这对于做无刷新的东西很是好用,比如说评论,或者登录什么的。其实jquery也是扩展了下js,那么下面学习吧发布一个js版的ajax请求。

function ajax(url,data,fn,type,dataType){
//连接,数据(如 a=1&b=2),fn回调,请求类型(如post或者get),数据类型(仅json和string)
//如:ajax("index.asp","xl=1",function(e){ alert(e) },"post","json")
 var xm;
 type=type||"get";
 if(window.XMLHttpRequest){
 xm=new XMLHttpRequest()
 }else{
 var M=["MSXML2.XMLHTTP","Microsoft.XMLHTTP","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0"];
 for(n=0;n<M.length;n++){
 try{
 xm=new ActiveXObject(M[n]);
 break
 }catch(e){}
 }
 };
 xm.open(type,url,true);//发送请求
 xm.setRequestHeader("is_ajax","1");//添加自定义头
 xm.onreadystatechange=function(){
 if(xm.readyState==4){
 if(xm.status==200){//200则表示成功
 if(fn){
 if(dataType&&dataType=="json"){
 eval("var _j="+xm.responseText);
 eval(fn(_j))
 }else{
 eval(fn(xm.responseText))
 }
 }
 }
 }
 };
 xm.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
 xm.send(data);//发送数据
}

通过以上ajax()还可以自己扩展出 post(),或者 get()等。

使用的时候可直接 ajax("","data=1&xb=2",function(e){}) ,也可自己定义 get或者 post,还可以处理json格式。

缺点:不能处理请求回调里的javascript代码

本文链接:https://xuexb.com/post/141.html

-- EOF --

发表于 2013年03月05日 16:11:43 ,添加在分类 前端技术 下 ,最后修改于 2016年07月16日 16:11:43

提醒: 本文最后更新于 3465 天前,文中所描述的信息可能已发生改变,请谨慎使用。

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。

AltStyle によって変換されたページ (->オリジナル) /