dojo demo, 服务器验证用户名是否已经被使用

前端之家收集整理的这篇文章主要介绍了dojo demo, 服务器验证用户名是否已经被使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这个demo有助于理解JS与服务器的协同工作。@H_301_2@


@H_301_2@

文档结构如上图, 主要是三个文件: main.js table.html validateUserName.jsp (代码文章末尾)
@H_301_2@


@H_301_2@



@H_301_2@

页面打开如下:@H_301_2@


选中第一个输入框后,右侧出现定义好的提示信息。如下:@H_301_2@


输入“olduser",为了简化验证过程,在validateUserName.jsp 中用硬编码验证用户名是否为”olduser",返回JSON字串。 如果是,则返回{valid:false}, 否则返回{valid:true}@H_301_2@
@H_301_2@


@H_301_2@


@H_301_2@

处理流程:@H_301_2@
@H_301_2@

用户输入“olduser",并把焦点移出当前输入框后, onchange 事件触发, 调用main.js中的usernameOnChange函数, 此函数发送验证请求到server,由validateUserName.jsp处理此请求。 validateUserName.jsp判断”olduser"为已有用户名, 于是返回{valid:false}到浏览器。 浏览器收到服务器的response之后,由main.js中的usernameValidationHandler函数处理响应,它判断valid为false,则显示定义好的error message.
@H_301_2@


@H_301_2@

valid为true的情况与为false的情况类似, 不会显示error message.@H_301_2@


@H_301_2@

有个示解决的问题是当valid为false为false时,error message 并未显示页面上,应该是dijit.byId("tableuserName").displayMessage(errorMessage);这一句@H_301_2@没有生效,这个问题暂时没能解决,在后面的学习中会留意看怎么样找到方法解决
@H_301_2@


@H_301_2@

table.html@H_301_2@

@H_301_2@

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <style type="text/css" title="text/css">
  5. @import "dijit/themes/claro/claro.css";
  6. @import "dojox/form/resources/CheckedMultiSelect.css";
  7. </style>
  8. <script type="text/javascript" src="dojo/dojo.js" djConfig="parSEOnLoad: true"></script>
  9. <script type="text/javascript" src="main.js"></script>
  10. <script>
  11. dojo.require("dojo/parser");
  12. // dojo.require("dijit/form/Button");
  13. dojo.require('dijit.form.ValidationTextBox');
  14. //dojo.require("dojo/data/ItemFileReadStore");
  15.  
  16. </script>
  17. </head>
  18. <body id="content" class="claro">
  19. <div id="mortgages" class=" ">
  20. <div class="" id="dijit/form/Form">
  21. <h2 class=""></h2>
  22. <p style="width:700px;">
  23. please enter you name and address
  24. </p>
  25.  
  26. <div class="">
  27. <div class="">
  28. <label for="userName">User Name</label>
  29. <input type="text" name="userName" value=""
  30. onchange="usernameOnChange"
  31. data-dojo-props="" id="tableuserName"
  32. dojoType="dijit.form.ValidationTextBox"
  33. promptMessage="oops"
  34. invalidMessage="invalid"
  35. missingMessage="Ooops! You forgot your first name!" />
  36.  
  37. </div>
  38. <div class="">
  39. <label for="Address">Address</label>
  40. <input type="text" name="Address" value=""
  41. data-dojo-type="dijit/form/ValidationTextBox"
  42. onchange=""
  43. data-dojo-props="trim:true,propercase:true" id="tableAddress" />
  44.  
  45. </div>
  46.  
  47. </div>
  48. </div>
  49. </div>
  50. <div id="result"></div>
  51.  
  52. </body>
  53. </html>

main.js


@H_301_2@

  1. function usernameOnChange() {
  2. console.log("run");
  3. var userName = dijit.byId("tableuserName").getValue();
  4. if(userName == ""){
  5. console.log("user name is empty");
  6. return;
  7. }
  8. dojo.xhrGet({
  9. url:"validateUserName.jsp?userName=" + userName,handleAs:"json",handle:usernameValidationHandler
  10. });
  11. }
  12. function usernameValidationHandler(response){
  13. //console.log("get response");
  14. dijit.byId("tableuserName").displayMessage("yes");
  15. if(!response.valid){
  16. var errorMessage = "user name already exists";
  17. //console.log(errorMessage);
  18. dijit.byId("tableuserName").displayMessage(errorMessage);
  19. }
  20. }

validateUserName.jsp

@H_301_2@

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%
  4. try{
  5. System.out.println("UserName :"+
  6. request.getParameter("userName"));
  7. if(request.getParameter("userName").equals("olduser")){
  8. out.println("{valid:false}");
  9. System.out.println("To Brower : false");
  10. }else{
  11. out.println("{valid: true}");
  12. System.out.println("To Brower : true");
  13. }
  14. }catch(Exception ex){
  15. out.println(ex.getMessage());
  16. ex.printStackTrace();
  17. }
  18. %>

猜你在找的Dojo相关文章