//我做的一个用户登陆,用ajax实现验证用户的账号和密码的,现在验证的功能已经实现了,但是当用户输入正确的账号和密码的时候,我要点两次才能登陆成功,点第一次弹出“用户名或密码错误”,点第二次就能成功!//请教高手这是什么原因,代码如下?//怎么解决? 1 var loginreslut; 2 //验证用户名或密码是否为空 3 function CheckIsNull() { 4 var uName = document.getElementById('<%=txtLoginUser.ClientID%>').value; 5 var uPwd = document.getElementById('<%=txtLoginPwd.ClientID%>').value; 6 if (uName != "" && uPwd != "") { 7 return true; 8 } 9 else {10 return false;11 }12 }1 <asp:ScriptManagerProxy ID="smpLogin" runat="server">2 <Services>3 <asp:ServiceReference Path="~/ClientHandle/AjaxWeb.asmx" />4 </Services>5 </asp:ScriptManagerProxy>6 <asp:LinkButton ID="lbtnLogin" runat="server" OnClientClick="if(!CheckReslut()) return false;" onclick="lbtnLogin_Click">登陆账户</asp:LinkButton>
13 14 //向服务器发送验证用户名和密码请求15 function CheckLogin() {16 var uName = document.getElementById('<%=txtLoginUser.ClientID%>').value;17 var uPwd = document.getElementById('<%=txtLoginPwd.ClientID%>').value;18 //GetLoginResult是WebService中的方法,验证用户和密码是否正确,返回bool类型19 WebGame.ClientHandle.AjaxWeb.GetLoginResult(uName, uPwd, CheckLoginResult);20 }21 22 //接受服务器返回的验证结果23 function CheckLoginResult(r) {24 if (r) {25 loginreslut = true;26 }27 else {28 loginreslut = false;29 }30 }31 32 //验证所有验证是否通过33 function CheckReslut() {34 if (CheckIsNull()) {35 //调用向服务器发送请求的函数36 CheckLogin();37 if (loginreslut == true) {38 return true;39 }40 else {41 alert("用户名或密码错误");42 return false;43 }44 }45 else {46 alert("用户名或密码不能为空");47 return false;48 }49 }50
7 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
AJAX是分为同步和异步的(你用的很显然是异步的) CheckReslut()这个方法有点拖了裤子放屁的感觉(原谅我的粗俗)
当你在这个方法里面执行 CheckLogin()之后程序是不会等待的
这个时候做这个判断显然不合理 if (loginreslut == true)
CheckLoginResult() 在这个方法里面就可以判断用户是否登录成功了不是吗?
如果你坚持要这样写 那就把Ajax写成同步的
- 7 回答
- 0 关注
- 559 浏览
添加回答
举报
0/150
提交
取消