Ajax通用类

        在用Ajax时,一般要在每个页面添加XMLHttpRequest定义与发送请求的JavaScipt代码,使页面代码增长。本文特将页面中重复的Ajax代码封装到一个JS文件中,在需要的页面引用它就实现Ajax功能。
AjaxHelper.js文件:
  1. //Ajax类定义
  2. function AjaxHelper()
  3. {
  4.     //构造函数
  5.     var httpRequest = null;
  6.     var requestResult = "";
  7.     var sync = false;
  8.     
  9.     this.init();
  10. }
    • //同步请求,默认为false
    • AjaxHelper.prototype.sync=false;
  11. //初始化
  12. AjaxHelper.prototype.init = function()
  13. {
  14.     try 
  15.     {
  16.         httpRequest = new ActiveXObject("Msxml2.httpRequest");
  17.     } 
  18.     catch (e1) 
  19.     {
  20.         try 
  21.         {
  22.             httpRequest = new ActiveXObject("Microsoft.httpRequest");
  23.         } 
  24.         catch (e2) 
  25.         {
  26.             try 
  27.             {
  28.                 httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
  29.             } 
  30.             catch (e3) 
  31.             {
  32.                 httpRequest = null;
  33.             }
  34.         }
  35.     }
  36.     
  37.     if(httpRequest == null)
  38.     {
  39.         alert("Error initializing AjaxHelper! Can't create XMLHttpRequest object.");
  40.     }
  41. }
  42. //发送请求
  43. AjaxHelper.prototype.request = function(url, postData)
  44. {
  45.     var isPost = arguments.length > 1;
  46.     var method = isPost ? "POST" : "GET";
  47.     
  48.     httpRequest.open(method, url, this.sync);
  49.     httpRequest.onreadystatechange = createFunction(this"handleResponse"this.requestCallback);
  50.     if(isPost)
  51.         httpRequest.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
  52.         httpRequest.send(postData);
  53. }
  54. //处理请求结果
  55. AjaxHelper.prototype.handleResponse = function(callbackFunc)
  56. {
  57.     if (httpRequest.readyState == 4)
  58.     {
  59.         if (httpRequest.status == 200) //正常
  60.         {
  61.             callbackFunc(httpRequest.responseText);
  62.         }
  63.         else if (httpRequest.status == 404)
  64.         {
  65.             alert("Request URL does not exist.");
  66.         }
  67.         else if (httpRequest.status == 403) 
  68.         {
  69.             alert("Access denied.");
  70.         }
  71.         else
  72.         {
  73.             alert("Error: status code is " + httpRequest.status + ".");
  74.         }
  75.     }
  76. }
  77. //处理请求结果事件,需要客户端定义
  78. AjaxHelper.prototype.requestCallback = function(result){}
  79. //将有参数的函数封装为无参数的函数
  80. function createFunction(obj, funcName)
  81. {
  82.     var args = [];
  83.     if(!obj)
  84.         obj = window;
  85.     for(var i=2; i<arguments.length; i++)
  86.         args.push(arguments[i]);
  87.         
  88.     return function()
  89.     {
  90.         obj[funcName].apply(obj, args);
  91.     }
  92. }

其中最后一个createFunction函数是将有参数的函数封装为无参数的函数,使客户可以用事件方式来处理请求结果。

 

使用方式:

1、在页面中添加JS引用

  1. <script type="text/jscript" language="javascript" src="AjaxHelper.js"></script>

 

2、定义请求结果处理函数

  1. function handleResult(result)
  2. {
  3.     //处理代码
  4. }

3、使用Ajax请求

  1. function requestData()
  2. {
  3.     var ajax = new AjaxHelper();
  4.     ajax.requestCallback = handleResult;
  5.     ajax.request("请求页面URL");//GET
  6.     //ajax.request("请求页面URL", postData);//POST
  7. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值