为了账号安全,请及时绑定邮箱和手机立即绑定

很急!Ajax验证用户名是否存在问题?望高手解答!

很急!Ajax验证用户名是否存在问题?望高手解答!

有只小跳蛙 2018-12-07 09:02:18
验证用户名是否存在的功能已经实现了,但是现在又遇到问题了,当我点击ibtnSubmitReg这个注册按钮的时候,我调用CheckResult()这个函数判断用户是否验证通过,通过了就执行后台的代码,向数据库中添加记录!但是现在的问题是当用户通过的验证,点击ibtnSubmitReg按钮,不能执行后台的代码,也就是说CheckUserName()这个函数返回的始终都是false!是ajax那块的问题!我调试的很久没找出问题!请教高手帮忙看看! <asp:ImageButton ID="ibtnSubmitReg" OnClientClick="if(!CheckResult()) return false;" ImageUrl="~/images/reg_submit.gif" runat="server" onclick="ibtnSubmitReg_Click" />   1 //验证用户名 2   var req; 3 function CheckUserName() { 4 var uName = document.getElementById('<%=txtUserName.ClientID%>').value; 5 var uNameMs = document.getElementById('<%=uNameMessage.ClientID%>'); 6 if (uName != "") { 7 req = GetXmlHttpRequest(); 8 req.open("get", "../ClientHandle/GetUserExists.ashx?userName=" + uName); 9 req.onreadystatechange = function() {10 if (req.readyState == 4) {11 if (req.status == 200) {12 if (req.responseText == "1") {13 uNameMs.innerHTML = "<img class='check_img' src='images/no.jpg' alt='' />&nbsp;用户名已存在";14 //alert("false");15   return false;16 }17 else {18 uNameMs.innerHTML = "<img class='check_img' src='images/yes.jpg' alt='' />";19 //alert("true");20   return true;21 }22 }23 }24 }25 req.send(null);26 }27 else {28 uNameMs.innerHTML = "<img class='check_img' src='images/no.jpg' alt='' />&nbsp;用户名不能为空";29 return false;30 }31 }32 33 //Ajax验证34 function GetXmlHttpRequest() {35 var http_request;36 if (window.XMLHttpRequest) {37 //如果是Mozilla浏览器38 http_request = new XMLHttpRequest();39 if (http_request.overrideMimeType) {40 http_request.overrideMimeType("text/xml");41 }42 }43 else if (window.ActiveXObject) {44 //如果是IE浏览器45 try {46 http_request = new ActiveXObject("Msxml2.XMLHTTP");47 }48 catch (e) {49 try {50 http_request = new ActiveXObject("Microsoft.XMLHTTP");51 }52 catch (e) { }53 }54 }55 return http_request;56 }57 //获取验证是否通过58 function CheckResult() {59 if (CheckUserName()) {60 return true;61 }62 else {63 return false;64 }65 }   服务端代码: public class GetUserExists : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; SqlDataReader dr = SqlHelper.ExecuteReader(CommandType.Text, "select uid from users where username = @username", new SqlParameter("@username", context.Request["userName"].ToString())); if (dr.Read()) { context.Response.Write("1"); } else { context.Response.Write("0"); } } public bool IsReusable { get { return false; } } }  
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

返回应该是undefined吧,alert(CheckUserName())就知道了。是你的 req.onreadystatechange = function() {}这里的调用有问题,是调用方式不是代码。想象一下你在里面return ture/false,都不可能被调用CheckUserName的地方获得。

另外装个 firebug,用firefox进行测试了,可以设定breakPoint的。

查看完整回答
反对 回复 2019-01-21
?
慕容森

TA贡献1853条经验 获得超18个赞

jquery

$.getJSON("URL",{},function(json){

 

});

URL:可以是一个ashx文件的地址,或者一个ACTION

查看完整回答
反对 回复 2019-01-21
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

把imagebtn换成普通的客户端按钮。

查看完整回答
反对 回复 2019-01-21
  • 3 回答
  • 0 关注
  • 368 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信