【问题标题】:remote validator in jquery bootstrapValidatorjquery bootstrapValidator 中的远程验证器
【发布时间】:2014-04-29 08:51:46
【问题描述】:

远程验证不起作用。它总是显示为用户名无效。我是这个 jquery 验证的新手。所以任何人都可以告诉错误是什么。

username: {
                        message: 'The username is not valid',
                        validators: {
                            notEmpty: {
                                message: 'The username is required and cannot be empty'
                            },
                            stringLength: {
                                min: 6,
                                max: 30,
                                message: 'The username must be more than 6 and less than 30 characters long'
                            },
                            regexp: {
                                regexp: /^[a-zA-Z0-9_\.]+$/,
                                message: 'The username can only consist of alphabetical, number, dot and underscore'
                            },
                            remote: {
                                url: 'remote.jsp',
                                type: "post",
                                async: false,
                                data:
                                        {
                                            username: function(validator)
                                            {
                                                return $('#defaultForm :input[name="username"]').val();

                                            }
                                        },
                                message: 'The username is not available',
                            },

在后端我使用的是 JSP,代码是:

    ResultSet rs;
    Boolean flag = true;

    String username = request.getParameter("username");
    rs = st.executeQuery("select * from members where user_name = '" + username + "'");
    if (rs.next()) {
        flag = false;
        out.print("false");    //already exist  

    } else {
        flag = true;
        out.print("true");   // not exist 
    }

【问题讨论】:

    标签: jquery jquery-validate twitter-bootstrap-3


    【解决方案1】:

    使用小服务程序

    username: {
                message: 'The username is not valid',
                validators: {
                    notEmpty: {},
                    stringLength: {
                        min: 6,
                        max: 20
                    },
                    regexp: {
                        regexp: /^[a-zA-Z0-9_\.]+$/
                    },
    
                    remote: {
                    url: './CheckUsernameServlet',
                    type: 'POST',
                    delay: 2000  
    
                    }
    
                }
            },
    

    在 servlet 代码中

     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    
        JSONObject json = new JSONObject();
        PrintWriter out=response.getWriter();
        response.setContentType("application/json");
        String email=request.getParameter("username");
        if(userDAO.validateEmail(email)){
    
            try {
                json.put("valid",true);
    
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else {
    
            try {
                json.put("valid",false);
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        out.print(json);
    }
    

    【讨论】:

      【解决方案2】:

      修改代码 写上面的代码

       username: {
            message: 'The username is not valid',
            validators: {
                      notEmpty: {},
                      stringLength: {
                      min: 6,
                      max: 20
                  },
                      regexp: {
                              regexp: /^[a-zA-Z0-9_\.]+$/
                  },
      
                      remote: {
                      url: './CheckUsernameServlet',
                      type: 'POST',
                      delay: 2000                
                   }
               }
        },
      

      <%@ page import="java.sql.*" %>
      <%@ page import="org.json.JSONException" %> 
      <%@ page import="org.json.JSONObject" %>  
      <% 
          ResultSet rs=null;
          Boolean flag = true;
          Statement st=null;
          JSONObject json = new JSONObject();
          String username = request.getParameter("username");
          rs = st.executeQuery("select * from members where user_name = '" + username + "'");
          if (rs.next()){
              flag = false;
              flag = false;
              json.put("valid",false); 
          } 
          else {
              flag = true;
              json.put("valid",true);
          }
          out.print(json);
      %>
      

      【讨论】:

        【解决方案3】:

        一年后回答

        我所做的只是将返回的 json 更改为有效的 Json 数据。因为上面的答案是正确的,但它没有返回有效的 Json 数据。

            public class RegistrationEmailCheck extends HttpServlet {
              protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("application/json");
        
          PrintWriter out = response.getWriter();
        JSONObject json = new JSONObject();
        String availEmail = request.getParameter("email");
        System.out.println(availEmail);
        String SQL = "SELECT email FROM login WHERE email='" + availEmail + "'";
        Connection con = DBInfo.getConn();
        Statement st;
        ResultSet rs;
        
        try {
            st = con.createStatement();
            rs = st.executeQuery(SQL);
        
        
            if (rs.next()) {
        
                out.print("{\"valid\" : false }");
                json.put("valid", false);
                System.out.println("false");
        
        
            } else {
        
                out.print("{\"valid\" : true }");
                json.put("valid", true);
                System.out.println("true");
        
        
            }
        
        
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
        
            out.close();
             }
        
        
        
           }
        
        
         }
        

        现在一切正常。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-07
          • 1970-01-01
          • 1970-01-01
          • 2015-05-17
          • 2013-01-20
          • 2011-01-28
          相关资源
          最近更新 更多