驗證用戶名是否存在的功能已經(jīng)實現(xiàn)了,但是現(xiàn)在又遇到問題了,當我點擊ibtnSubmitReg這個注冊按鈕的時候,我調用CheckResult()這個函數(shù)判斷用戶是否驗證通過,通過了就執(zhí)行后臺的代碼,向數(shù)據(jù)庫中添加記錄!但是現(xiàn)在的問題是當用戶通過的驗證,點擊ibtnSubmitReg按鈕,不能執(zhí)行后臺的代碼,也就是說CheckUserName()這個函數(shù)返回的始終都是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='' /> 用戶名已存在";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='' /> 用戶名不能為空";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條經(jīng)驗 獲得超2個贊
返回應該是undefined吧,alert(CheckUserName())就知道了。是你的 req.onreadystatechange = function() {}這里的調用有問題,是調用方式不是代碼。想象一下你在里面return ture/false,都不可能被調用CheckUserName的地方獲得。
另外裝個 firebug,用firefox進行測試了,可以設定breakPoint的。

慕容森
TA貢獻1853條經(jīng)驗 獲得超18個贊
jquery
$.getJSON("URL",{},function(json){
?
});
URL:可以是一個ashx文件的地址,或者一個ACTION
- 3 回答
- 0 關注
- 393 瀏覽
添加回答
舉報
0/150
提交
取消