Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jQuery验证插件添加方法_Php_Jquery_Mysql_Validation - Fatal编程技术网

Php jQuery验证插件添加方法

Php jQuery验证插件添加方法,php,jquery,mysql,validation,Php,Jquery,Mysql,Validation,我正试图用下面的代码向jQuery验证插件添加一个新方法。我的目标是检查数据库(MySQL)中是否已经存在电子邮件地址。如果是,它将通知用户注册另一个电子邮件地址。不知何故,总是返回的结果是“电子邮件已被接收” 以下是validate.js中的代码: $(document).ready(function(){ $.validator.addMethod("uniqueEmail", function(value, element) { $.ajax({ type: "POST

我正试图用下面的代码向jQuery验证插件添加一个新方法。我的目标是检查数据库(MySQL)中是否已经存在电子邮件地址。如果是,它将通知用户注册另一个电子邮件地址。不知何故,总是返回的结果是“电子邮件已被接收”

以下是validate.js中的代码:

$(document).ready(function(){
 $.validator.addMethod("uniqueEmail", function(value, element) {
   $.ajax({
      type: "POST",
      url: "availability.php",
      data: value,
      success: function(exist)
      {
       if(exist>0) {
         return true;
       } return false;
      }
  });
 } ,"Email is already taken");
 $('#signup form').validate({
  rules: {
   firstname: {
    required: true,
    minlength:3
   },
   lastname: {
    required: true,
    minlength: 3
   },
   affiliation: {
    required: true,
   },
   occupation: {
    required: true,
   },
   email: {
    required: true,
    email: true,
    uniqueEmail: true
   },
   password: {
    minlength: 6,
    required: true
   },
   repassword: {
    equalTo: "#password"
   }
  },
  messages: {
   firstname: {
    minlength: "Your first name should be more than 3 characters"
   },
   lastname: {
    minlength: "Your last name should be more than 3 characters"
   },
  }, 
  success: function(label) {
   label.text('OK!').addClass('valid');
  }
 });
});
以下是我的php文件中的代码:

<?php

include_once $_SERVER['DOCUMENT_ROOT'] . '/braddclient/includes/magicquotes.inc.php';
include $_SERVER['DOCUMENT_ROOT'] . '/braddclient/includes/db.inc.php';

$email = strtolower($_POST['email']);
$email = mysqli_real_escape_string($link, $email);
$sql = "SELECT * FROM bradduser WHERE email='$email'";
$result = mysqli_query($link, $sql);
$num = mysqli_num_rows($result);

echo $num;

?>

在这里,使用自定义方法不能完全做到这一点,因为您需要验证插件来知道这是一个远程(或者更重要的是,一个异步)请求

幸运的是,它有内置的帮助功能。您可以在此处使用自定义方法,而不是使用自定义方法,因此完全不使用自定义方法,并将其更改为:

uniqueEmail: true
为此:

remote: { url: "availability.php", type: "post" }
然后将错误消息添加到
消息中,如下所示:

email: { remote: "Email is already taken" }
<?php
  include_once $_SERVER['DOCUMENT_ROOT'] . '/braddclient/includes/magicquotes.inc.php';
  include $_SERVER['DOCUMENT_ROOT'] . '/braddclient/includes/db.inc.php';

  $email = strtolower($_POST['email']);
  $email = mysqli_real_escape_string($link, $email);
  $sql = "SELECT * FROM bradduser WHERE email='$email'";
  $result = mysqli_query($link, $sql);
  if(mysqli_num_rows($result) > 0) {
    echo "false";  //validation fails, email in use
  } else {
    echo "true";   //validation passes
  }
?>
同时将PHP端更改为匹配,返回
true
false
,如下所示:

email: { remote: "Email is already taken" }
<?php
  include_once $_SERVER['DOCUMENT_ROOT'] . '/braddclient/includes/magicquotes.inc.php';
  include $_SERVER['DOCUMENT_ROOT'] . '/braddclient/includes/db.inc.php';

  $email = strtolower($_POST['email']);
  $email = mysqli_real_escape_string($link, $email);
  $sql = "SELECT * FROM bradduser WHERE email='$email'";
  $result = mysqli_query($link, $sql);
  if(mysqli_num_rows($result) > 0) {
    echo "false";  //validation fails, email in use
  } else {
    echo "true";   //validation passes
  }
?>

回答得好。我不知道遥控器:
。应该想到他们有一些东西可以应付这种情况+1你好,尼克,我已经按照你的方法更改了代码,但对我来说不起作用。不知何故,错误消息“请输入有效的电子邮件地址”不断出现。我的电子邮件规则如下:email:{required:true,email:true,remote:{url:“availability.php”,键入:“post”},我犯了什么错误吗?@dave-你的php代码被击中了吗?在点击远程邮件之前,
email:true
规则似乎失败了……如果您将其添加到
messages
中,应该会显示不同的错误消息,就像我上面所说的。我发现了错误。我输入了mysqli_num_行而不是mysqli_num_行!我讨厌我犯这样的错误。谢谢你,尼克@dave-Welcome:)您现在都准备好了吗?对于任何对此示例有问题的人,我在服务器端语言的响应方面遇到了问题,所以我设法通过将插件中的
数据类型
ajax
直接从
数据类型:“json”
更改为
数据类型:“text”来解决这个问题
第1206行