以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 HTML/XHTML/Ajax/Web 2.0/Web 3.0 』  (http://bbs.xml.org.cn/list.asp?boardid=22)
----  帮我看一个ajax的问题,谢谢了.  (http://bbs.xml.org.cn/dispbbs.asp?boardid=22&rootid=&id=56208)


--  作者:weisnet
--  发布时间:11/30/2007 12:19:00 AM

--  帮我看一个ajax的问题,谢谢了.
////////////////////Ajax////////////Class///////////////////
//Power By WeisNet CopyRight @2006
//Edit Section for 56Best
/////////////////////////////////////////////////

var Try = {
  these: function() {
    var returnValue;

    for (var i = 0; i < arguments.length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) {}
    }

    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 = {
      Init:function() {},
      Result:"",
      SucInfo:"",
      FaildInfo:"",
      Url:"",
      returnType:"Compare"
}

var aj = new Ajax();

Ajax.prototype.func = function() {
            if (typeof xhr != 'undefined')  
                 if (xhr.readyState == 4) {
                        if (xhr.status == 200)
                          {
                               aj.FuncResult();
                          }
                        else
                          {
                               aj.Config.Result = "";
                               return false;
                          }
              }
              else
              {
                  aj.Config.Result = "";
                  return false;
              }
    }
       

Ajax.prototype.Action = function(url) {
      url = url+'&e='+Math.random();
      xhr = aj.Init();    
      xhr.open("POST",url,false);
      xhr.onreadystatechange = aj.func;
      xhr.send(null);
}

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

Ajax.prototype.FuncResult = function()
{
      if (aj.Config.returnType=='Compare')
      {
           if (aj.onResult(grr(xhr.responseText)))
           {
                aj.Config.Spn.innerHTML = aj.Config.FaildInfo;
           }
           else
           {
                aj.Config.Spn.innerHTML =  aj.Config.SucInfo;
                aj.location();
           }
      }
      else
      {
           aj.Config.Spn.innerHTML = crr(xhr.responseText);
      }
}

Ajax.prototype.location = function()
{
      if (aj.Config.Url!='')
             window.location.href=aj.Config.Url;
}


Html页面
<html>
<head>
<title>Ajax小方法,使用方法</title>
<script language='javascript'>...
function Cfrlogname(ln)
...{
      if (!checkByteLength(ln.value.trim(),4,20))
      ...{
             alert('请输入4-20字符用户名!');
             ln.focus();
             return false;
      }
      
      var Webreq = new Ajax();
      Webreq.Config.Result = "OkSuc";
      Webreq.Config.Spn = document.all.logName_info;
      Webreq.Config.SucInfo = "验证成功!";
      Webreq.Config.FaildInfo = "对不起,验证失败!";
          Webreq.Config.returnType = 'Compare';
          Webreq.Config.Url = 'www.56best.cn';
      Webreq.Action('editData.aspx?types='+ln.value.trim())
}
        </script>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td><input type="text" name="logName" id="logName" runat="server" >
                  <input type="button" name="Submit" value="检查会员名" onclick="Cfrlogname(document.all.logName)"></td>
              </tr>
              <tr>
                <td class="gray_2"><div id="logName_info">&nbsp;</div></td>
              </tr>
</table>
</body>
</html>

使的的后台代码是 .aspx.vb 里面
Sub Page_Load()sub Page_Load()
     dim Str as string = Request.QueryString("types")
     Response.Write("<zwd><result>OkSuc</result></zwd>")
end sub


=============================================

如果在这个页面(HTML)只使用一次这个AJAX方法,不会有问题

但是如果同时多次使用(就是在加载页面时,获取数据时),就会出错。 一般是最后一个使用这个AJAX方法的地方,才会正常显示数据,其他的不能显示。

请帮我看一下.


--  作者:weisnet
--  发布时间:11/30/2007 12:46:00 PM

--  
怎么没有人回答呢?
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms