周伟东的BLOG 订阅
相关博文
内容读取中…
推荐博文
内容读取中…
谁看过这篇博文
内容读取中…
字体大小: 正文
Ajax的小方法. 使用方法 (2008-03-10 00:18:20)
 

////////////////////Ajax////////////Method///////////////////
//Power By WeisNet @2006
//Edit Section for 56best.cn
/////////////////////////////////////////////////

var Try = {
  these: function() {
    var returnValue;
    for (var i = 0; i < arguments.length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) {}
    }
   //alert(123);
    return returnValue;
  }
}

function grr(rp) {
       if(RegExp.$1)/(.*)/.exec("");
       var re=new RegExp("<result>(.*)<\/result>");
       re.exec(rp);
       if(RegExp.$1) return RegExp.$1;
       return "";
 }
 
function crr(rp) {
       if(RegExp.$1)/(.*)/.exec("");
       var re=new RegExp("<content>(.*)<\/content>");
       re.exec(rp);
       if(RegExp.$1) return RegExp.$1;
       return "";
 }

var Ajax = function() {}
//var xhr ;这样定义不行
Ajax.prototype.Init = function(){
      return Try.these(
          function() {return new ActiveXObject("Msxml2.XMLHTTP")},
          function() {return new ActiveXObject("Microsoft.XMLHTTP")},
          function() {return new XMLHttpRequest()}
      ) || false;
}

Ajax.prototype.Config = {
      Result:"",
      SucInfo:"",
      FaildInfo:"",
      Url:"",
      returnType:"Compare"  //输入Compare是比较返回的字符是否一致,要指定Result值,//其他返回内容
}

var aj = new Ajax();

Ajax.prototype.Action = function(url) {  //同步
      url = url + '&e='+Math.random();
      var xhr = aj.Init();   
      xhr.onreadystatechange = function()
      {
   if (xhr.readyState == 4)
   {
    if (xhr.status == 200)
    {
     aj.FuncResult(aj.Config.Spn,xhr);    
    }
   }
      }
      xhr.open("POST",url,false);
      xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
     
      xhr.send(null);
     
}

Ajax.prototype.Actionfor = function(url,spn) {  //异步

      url = url + '&e='+Math.random();
      var xhr = aj.Init();  //这样写是为了多异步执行
     
      xhr.onreadystatechange = function()
      {
   if (xhr.readyState == 4)
   {
    if (xhr.status == 200)
    {
     aj.FuncResult(spn,xhr);    
    }
   }
      }
      xhr.open("GET",url,true);
     
      xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      xhr.send(null); 
}

Ajax.prototype.ActionAlert = function(url) //执行alert提示框的同步
{
    url = url + '&e='+Math.random();
      var xhr = aj.Init();  //这样写是为了多异步执行
     
      xhr.onreadystatechange = function()
      {
   if (xhr.readyState == 4)
   {
    if (xhr.status == 200)
    {
     aj.AlertResult(xhr);    
    }
   }
      }
      xhr.open("GET",url,false);
     
      xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      xhr.send(null);
}

Ajax.prototype.onResult = function(v) {
      return v==aj.Config.Result;
}

Ajax.prototype.FuncResult = function(spn,xhr)
//alert(spn.id);

   if (aj.Config.returnType=='Compare')
   {
      if (aj.onResult(grr(xhr.responseText)))
      {
          
           spn.innerHTML = aj.Config.SucInfo;
           if (aj.Config.Url!='')
           {
                window.location.href = aj.Config.Url;
           }
      }
      else
      {
         
           spn.innerHTML =  aj.Config.FaildInfo;
          
      }
   }
   else
   {
      spn.innerHTML = crr(xhr.responseText);
   }

}


Ajax.prototype.AlertResult = function(xhr)
{
   if (aj.Config.returnType=='Compare')
   {
      if (aj.onResult(grr(xhr.responseText)))
      {
           alert(aj.Config.SucInfo);
      }
      else
      {
           alert(aj.Config.FaildInfo);
      }
   }
   else
   {
      alert(crr(xhr.responseText));
   }
}
///////////////////////////////////////////////////////////////

 

使用方法: (比如说是在页面中加载数据)

 

Test.HTML 页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns=http://www.w3.org/1999/xhtml>
 <HEAD>
  <title>TestTQ</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
  <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
  <script type="text/javascript" src="js/AjaxMethod.js"></script>
  
  <script type="text/javascript">
      function ajfor(v,spn)
      {
           var Ajspn = document.getElementById(spn)
           var Webreq = new Ajax();
                 Webreq.Config.Result = "TestSuc";
                 Webreq.Config.Spn = Ajspn;
                 Webreq.Config.SucInfo = "恭喜您,登陆成功!";
                 Webreq.Config.FaildInfo = "对不起,登陆失败,请重试!";
                 Webreq.Config.returnType = 'Content';
                 //Webreq.Config.Url = 'http://www.163.com';
                 Webreq.Actionfor('Ajax.aspx?v='+v,Ajspn);
      }
     
      function icfr()
      {
    alert(document.getElementById('cadd').innerHTML);
      }
  </script>
  <style type="text/css">
   .cWeb {color:#fff;}
  </style>
 </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
   <span id="s1Pn" ><script type="text/javascript">ajfor(1,'s1Pn')</script>正在加载数据...</span>
   
   <hr />
   
   <span id="s2Pn" ><script type="text/javascript">ajfor(2,'s2Pn')</script>正在加载数据...</span>
   
   <hr/>
   
   <span id="s3Pn" ><script type="text/javascript">ajfor(3,'s3Pn')</script>正在加载数据...</span>
   
   <hr />
   
   <span id="s4Pn" ><script type="text/javascript">ajfor(4,'s4Pn')</script>正在加载数据...</span>
   
   <hr />
</form>
 </body>
</HTML>

 

///////////////////////////////////////////////////////

Ajax.aspx 页面为;

 

<%@ Page language="c#" Codebehind="Ajax.aspx.cs" AutoEventWireup="false" Inherits="WebCreate.Ajax" %>

 

////////////////////////////////////////

Ajax.aspx.cs 页面源码为 (举例)

 

/---------------

string v = Request.QueryString("v").ToString();

if (v == "1")

   Response.Write("<zwd><content>Sina.com</content></zwd>");

else if (v == "2")

   Response.Write("<zwd><content>Neteasy.com</content></zwd>");

else if (v == "3")

   Response.Write("<zwd><content>Sohu.com</content></zwd>");

else

   Response.Write("<zwd><content>QQ.Com</content></zwd>");

 

 

/////////////////////////////////////////////////////////

如果是要比较内容,比方方是验证注册用户名是否可用.

Webreq.Config.returnType = 'Content'; 改为

Webreq.Config.returnType = 'Compare';

 

<zwd><content>QQ.Com</content></zwd>的content改为result

评论(0)| 阅读 (0) | 收藏 (0) | 分享 | 打印 | 举报
发表评论
匿名评论(无需注册)
验证码:看不清楚数字吗?点击这里再试试。
新浪BLOG意见反馈留言板 不良信息反馈 电话:95105670 提示音后按2键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有