一个有关注册的异步应用
2014-06-03 16:29
204 查看
这是一个网站的注册页面
![](http://img.blog.csdn.net/20140603160122375)
希望在填写用户名后,页面能反馈用户名是否占用;
也希望填写口令是否一致或者是否符合要求。
![](http://img.blog.csdn.net/20140603160128500)
利用一个请求对象,可以安全的发送和接受一个异步请求。但是异步请求不作任何等待,甚至包括他自己,如果两个请求共享一个请求对象,就会出错,最后一个请求的数据会覆盖上一个。
Javascript中在函数内部声明的变量如果没有加var就是全局变量,所以request是全局变量,也为了回调函数能访问他。
异步意味着不能依赖于请求和响应的顺序。如果用户名和口令有一个合法,另一个不合法,注册按钮要控制不可按。这需要一个监视器函数,从局外监视应用。
发送一个完整的表单进行处理时,希望请求是同步的,不希望用户修改数据。但是这个应用是异步的,点击注册按钮时候,下面的图片会滚动,来吸引客户眼球。。。
希望在填写用户名后,页面能反馈用户名是否占用;
也希望填写口令是否一致或者是否符合要求。
利用一个请求对象,可以安全的发送和接受一个异步请求。但是异步请求不作任何等待,甚至包括他自己,如果两个请求共享一个请求对象,就会出错,最后一个请求的数据会覆盖上一个。
Javascript中在函数内部声明的变量如果没有加var就是全局变量,所以request是全局变量,也为了回调函数能访问他。
异步意味着不能依赖于请求和响应的顺序。如果用户名和口令有一个合法,另一个不合法,注册按钮要控制不可按。这需要一个监视器函数,从局外监视应用。
发送一个完整的表单进行处理时,希望请求是同步的,不希望用户修改数据。但是这个应用是异步的,点击注册按钮时候,下面的图片会滚动,来吸引客户眼球。。。
window.onload = initPage; var usernameValid = false; var passwordValid = false; function initPage() { document.getElementById("username").onblur = checkUsername; document.getElementById("password2").onblur = checkPassword; document.getElementById("register").disabled = true; document.getElementById("register").onclick = registerUser; } function checkUsername() { document.getElementById("username").className = "thinking"; usernameRequest = createRequest(); if (usernameRequest == null) alert("Unable to create request"); else { var theName = document.getElementById("username").value; var username = escape(theName); var url= "checkName.php?username=" + username; usernameRequest.onreadystatechange = showUsernameStatus; usernameRequest.open("GET", url, true); usernameRequest.send(null); } } function showUsernameStatus() { if (usernameRequest.readyState == 4) { if (usernameRequest.status == 200) { if (usernameRequest.responseText == "okay") { document.getElementById("username").className = "approved"; usernameValid = true; } else { document.getElementById("username").className = "denied"; document.getElementById("username").focus(); document.getElementById("username").select(); usernameValid = false; } checkFormStatus(); } } } function checkPassword() { var password1 = document.getElementById("password1"); var password2 = document.getElementById("password2"); password1.className = "thinking"; // First compare the two passwords if ((password1.value == "") || (password1.value != password2.value)) { password1.className = "denied"; return; } // Passwords match, so send request to server passwordRequest = createRequest(); if (passwordRequest == null) { alert("Unable to create request"); } else { var password = escape(password1.value); var url = 'checkPass.php?password=' + password; passwordRequest.onreadystatechange = showPasswordStatus; passwordRequest.open('GET', url, true); passwordRequest.send(null); } } function showPasswordStatus() { if (passwordRequest.readyState == 4) { if (passwordRequest.status == 200) { var password1 = document.getElementById("password1"); if (passwordRequest.responseText == 'okay') { password1.className = "approved"; passwordValid = true; } else { password1.className = "denied"; password1.focus(); password1.select(); passwordValid = false; } checkFormStatus(); } } } function checkFormStatus() { if (usernameValid && passwordValid) { document.getElementById("register").disabled = false; } else { document.getElementById("register").disabled = true; } } function registerUser() { t = setInterval(scrollImages, 50); document.getElementById("register").value = "Processing..."; registerRequest = createRequest(); if (registerRequest == null) { alert("Unable to create request."); } else { var url = "register.php?username=" + escape(document.getElementById("username").value) + "&password=" + escape(document.getElementById("password1").value) + "&firstname=" + escape(document.getElementById("firstname").value) + "&lastname=" + escape(document.getElementById("lastname").value) + "&email=" + escape(document.getElementById("email").value) + "&genre=" + escape(document.getElementById("genre").value) + "&favorite=" + escape(document.getElementById("favorite").value) + "&tastes=" + escape(document.getElementById("tastes").value); registerRequest.onreadystatechange = registrationProcessed; registerRequest.open("GET", url, true); registerRequest.send(null); } } function registrationProcessed() { if (registerRequest.readyState == 4) { if (registerRequest.status == 200) { document.getElementById('wrapper').innerHTML = registerRequest.responseText; } } } function scrollImages() { var coverBarDiv = document.getElementById("coverBar"); var images = coverBarDiv.getElementsByTagName("img"); for (var i = 0; i < images.length; i++) { var left = images[i].style.left.substr(0, images[i].style.left.length - 2); if (left <= -86) { left = 532; } images[i].style.left = (left - 1) + "px"; } }
相关文章推荐
- 有关libevent事件注册的一个小问题
- 做一个Android应用的注册与登录功能
- AJAX.NET应用----异步注册
- 一个可供参考的Java高并发异步应用案例
- 一个可供参考的Java高并发异步应用案例
- QUIZ:一个网页上面有多少个SilverLight4应用时会发生莫名其妙的崩溃?和什么有关?
- JQuery+AJAX异步刷新的一个基础应用(检验用户名是否已存在)
- Vert.x,一个异步、可伸缩、并发应用框架引发的思考
- 一个可供参考的Java高并发异步应用案例
- 有关Python中线程的超时控制以及一个简单的应用
- Vert.x,一个异步、可伸缩、并发应用框架引发的思考
- Vert.x,一个异步、可伸缩、并发应用框架引发的思考
- 一个可供参考的Java高并发异步应用案例--转
- Vert.x,一个异步、可伸缩、并发应用框架引发的思考
- 注册一个应用的端点描述符afRegister( endPointDesc_t *epDesc )
- SilverLight学习笔记--实际应用(一)(5):手把手建立一个Silverlight应用程序之异步数据校验2
- 答案of QUIZ:一个网页上面有多少个SilverLight4应用时会发生莫名其妙的崩溃?和什么有关?
- 新手提问 想要做一个单机android应用,要实现注册登录功能。目前折在了连数据库这一步上,也不知道自己这么做对不对,哪儿错了。求教求教!
- 自己编写的一个有关安卓应用开发培训PPT
- 一个电子商务web应用的系统架构