jquery validation with ajax call

前端 未结 4 1269
闹比i
闹比i 2020-12-06 00:58

I am using the jquery validation and i need to validate an email.

I use

    $(\"#myForm\").validate({
        rules: 
            email: {
                   


        
相关标签:
4条回答
  • 2020-12-06 01:06

    first of all i want to tell you that if you are using post method in ajax then dont pass email in url.

     $.ajax({
            type: "POST",
            url: URLROOT + '/register/check/';
            data: {email:email};
             success: function (result) {
                if (result == 'exist') {
                  return false;
                 } else {
                 return true;
                 }
              }
          });`
    

    after that you remove parameter from controller's function.

    `public function check(l) {
      if($this->userModel->findUserByEmail($_POST['email'])==true)) {
       return 'exist';
      }
      return 'false';
     }`
    

    Try with this.

    0 讨论(0)
  • 2020-12-06 01:08

    Whats your server language? PHP or ASP?

    This is the jQuery part:

    $.ajax({
        type: "POST",
        url: "YourWebserviceOrWhatEver",
        data: "{'Email':'your@ema.il'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
          if(msg.EmailExists){
            //Email exists
            alert("This email already exists. Please select other");
          }
          else {
           //Email doesn't exist yet
           doSomething();
          }
        }
    });
    
    0 讨论(0)
  • 2020-12-06 01:14

    Well, this works for me...

     $('[id$=txtEmail]').rules("add", { required: true, email: true,
             remote:function(){
                  var checkit={
                      type: "POST",
                      url:  WebServicePathComplete+"VerifyEmail",
                      contentType: "application/json; charset=utf-8",
                      dataType: "json",
                      data: "{'email':'" +$('[id$=txtEmail]').val() + "'}"
                  };
                  return checkit;
             }
      });
    

    note that I have a input with the id 'txtMail'

    0 讨论(0)
  • 2020-12-06 01:23
    remote: "/some/remote/path"
    

    That path will be passed the value of the field in a $_GET. so.. what actually gets called in your case would be:

    /some/remote/path?email=someemailuriencoded
    

    Have the server side code return just the text true or false.

    Then the corresponding message also named remote.

    remote: "The corresponding email already exists"
    

    My code for something similar:

    $("#password_reset").validate({
      rules: { 
        email: { required: true, email: true, minlength: 6, remote: "/ajax/password/check_email" }
      }, 
      messages: { 
        email: { required: "Please enter a valid email address", minlength: "Please enter a valid email address", email: "Please enter a valid email address", remote: "This email is not registered" }
      }, 
      onkeyup: false,
      onblur: true
    });
    

    The corresponding server side code in php:

    $email_exists = $db->prows('SELECT user_id FROM users WHERE email = ? LIMIT 1', 's' , $_GET['email'] );
    if ( $email_exists ) { echo 'true'; } else { echo 'false'; }
    exit;
    

    Of course that's using my database abstraction stuff, but you get it.

    0 讨论(0)
提交回复
热议问题