17

我正在使用 jquery 验证,我需要验证电子邮件。

我用

    $("#myForm").validate({
        rules: 
            email: {
                required: true,
                email: true
            }
})

到目前为止,一切都很好。问题是我需要进行 ajax 调用来验证给定的电子邮件是否已经存在。如果存在显示消息“此电子邮件已退出。请选择其他”。

谁能帮我实现这个。

4

4 回答 4

18
remote: "/some/remote/path"

该路径将通过 $_GET 中的字段值传递。所以..在您的情况下实际调用的是:

/some/remote/path?email=someemailuriencoded

让服务器端代码只返回文本 true 或 false。

然后相应的消息也命名为remote。

remote: "The corresponding email already exists"

我的代码类似:

$("#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
});

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;

当然,这是使用我的数据库抽象的东西,但你明白了。

于 2009-10-14T07:15:43.670 回答
8

好吧,这对我有用...

 $('[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;
         }
  });

请注意,我有一个 ID 为“txtMail”的输入

于 2010-10-19T20:15:17.420 回答
0

你的服务器语言是什么?PHP 还是 ASP?

这是 jQuery 部分:

$.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();
      }
    }
});
于 2009-10-14T07:23:49.647 回答
0

首先我想告诉你,如果你在 ajax 中使用 post 方法,那么不要在 url 中传递电子邮件。

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

之后,您从控制器的功能中删除参数。

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

试试这个。

于 2018-11-30T18:57:24.973 回答