ajax的封装
利用自调用匿名函数对ajax进行封装,会节省我们很多精力重复地书写代码。下面封装了get、post两种请求,以及text、xml、json数据类型传输。如下: (function(){ //1、用于得到一个DOM元素 //定义了一个$函数 作用域有局部 var $ = function(id){ return document.getElementById(id); }; //2、用于得到一个Ajax对象 //将$看作函数对象,init为属性,值为函数体 $.init = function(){ try{return new XMLHttpRequest()}catch(e){} try{return new ActiveXObject(‘Microsoft.XMLHTTP‘)}catch(e){} alert(‘请更改新浏览器!‘); }; //用于发送Ajax get请求 $.get = function(url,data,callback,type){ var xhr = $.init(); if (data != null){//传递参数、只发出请求 url = url+‘?‘+data; } xhr.open(‘get‘,url); xhr.setRequestHeader(‘If-Modified-Since‘,‘0‘);//解决get缓存问题 xhr.onreadystatechange = function(){ if (xhr.readyState == 4 && xhr.status == 200){ //当没有指定传值类型时,默认为字符串 if (type == null){ type = ‘text‘; } //判断语句指定三种接收形式 if (type == ‘text‘){ callback(xhr.responseText); } if (type == ‘xml‘){ callback(xhr.responseXML); } if (type == ‘json‘){ callback(eval("("+xhr.responseText+")")); } } }; xhr.send(null); }; //用于发送Ajax post请求 $.post = function(url,data,callback,type){ var xhr = $.init(); xhr.open(‘post‘,url); xhr.setRequestHeader(‘content-type‘,‘application/x-www-form-urlencoded‘); xhr.onreadystatechange = function(){ if (xhr.readyState == 4 && xhr.status == 200){ //当没有指定传值类型时,默认为字符串 if (type == null){ type = ‘text‘; } //判断语句指定三种接收形式 if (type == ‘text‘){ callback(xhr.responseText); } if (type == ‘xml‘){ callback(xhr.responseXML); } if (type == ‘json‘){ callback(eval("("+xhr.responseText+")")); } } }; xhr.send(data); }; //增大其作用域全局变量 window方法的$属性 赋值为$ 闭包写法 window.$ = $; })();
本文出自 “做一只蜗牛真好” 博客,请务必保留此出处http://smili.blog.51cto.com/8919945/1565331
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。