js 代码
- function ajax(method,synchronous){
- this ._httpReq = false ; /*ajax初始化对象*/
- this .method = method; /*get|post*/
- this .syn = synchronous; /*是否采用异步请求,默认true*/
- this .url = "" ; /*提交异步请求的url地址*/
- this .resType = "" ; /*异步请求返回数据类型text|xml*/
- this .callback = "" ; /*异步请求完成后的回滚函数*/
- this .loading = "" ; /*load函数*/
- this .content = null ; /*Ajax中send方法的参数*/
- this .readystate = -1; /*ajax的请求状态*/
- this .state = -1; /*http请求响应代码*/
- /************ get/set方法开始 ***************/
- //设置提交异步请求的url地址
- this .setUrl = function (url){
- this .url = url;
- }
- //设置异步请求返回数据类型text|xml
- this .setResType = function (restype){
- this .resType = restype;
- }
- //设置回滚函数
- this .setCallback = function (func){
- this .callback = func;
- }
- //设置load函数
- this .setLoading = function (loadFunc){
- this .loading = loadFunc;
- }
- //设置send自带的参数值,默认null
- this .setContent = function (contents){
- this .content = contents;
- }
- /*********get/set方法结束*******/
- /*********状态显示方法*********/
- //调用window.alert方法
- this .alert = function (msg){
- window.alert(msg);
- }
- //调用window.status的方法
- this .status = function (msg){
- window.status = msg;
- }
- /*********状态显示方法结束*********/
- /*************执行方法开始*****************/
- //创建HttpXMLRequest
- this .createXMLRequest = function (){
- if (window.XMLHttpRequest){
- this ._httpReq = new XMLHttpRequest();
- if ( this ._httpReq.overrideMimeType){
- this ._httpReq.overrideMimeType( "text/xml" );
- }
- } else if (window.ActiveXObject){
- try {
- this ._httpReq = new ActiveXObject( "Msxml2.XMLHTTP" );
- } catch (e){
- try {
- this ._httpReq = new ActiveXObject( "Microsoft.XMLHTTP" );
- } catch (e){}
- }
- }
- }
- //初始化ajax对象
- this .init = function (){
- this .createXMLRequest();
- }
- //发送一个http请求
- this .send = function (){
- if ( this .resType.toLowerCase()== "post" ){
- _httpReq.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded" );
- }
- this ._httpReq.open( this .method, this .url, this .syn);
- this ._httpReq.send( this .content);
- }
- //取消一个http请求
- this .abort = function (){
- this ._httpReq.abort();
- }
- this .callbackState = function (){
- switch ( this ._httpReq.readyState){
- case 0:
- this .readystate = 0;
- break ;
- case 1:
- this .readystate = 1;
- break ;
- case 2:
- this .readystate = 2;
- break ;
- case 3:
- this .readystate = 3;
- break ;
- case 4:
- this .readystate = 4;
- switch ( this ._httpReq.status){
- case 200:
- eval( this .callback);
- break ;
- case 202:
- this .status( "请求处理中,还没处理完毕!" );
- break ;
- case 400:
- this .status( "错误的请求!" );
- break ;
- case 404:
- this .status( "请求资源未找到!" );
- break ;
- case 500:
- this .status( "内部服务器错误,请联系管理员!" );
- break ;
- default :
- this .status( "返回数据失败," + this ._httpReq.status);
- break ;
- }
- break ;
- default :
- this .readystate = 0;
- break ;
- }
- }
- this .onReadyStateChange = function (){
- var owner = this ;
- this ._httpReq.onreadystatechange = function (){
- owner.callbackState.call(owner);
- }
- }
- /*************执行方法结束*****************/
- }
虽然跟网上有些ajax封装类有些类似,但这个确实是我自己写出来的,虽然写得不是特别好,而且还有些功能还没完善,不过这个js类的确可以用来在小项目使用一些ajax技术时非常方便。欢迎批评!!