-- 作者: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"> </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方法的地方,才会正常显示数据,其他的不能显示。 请帮我看一下.
|