jQuery验证远程消息

时间:2014-12-16 12:12:31

标签: php jquery jquery-validate

当电子邮件与jQuery验证一起使用时,我尝试显示错误消息。 不幸的是,当电子邮件已被使用时,没有错误消息。 我尝试了以下方法:

的Javascript

$('#registerForm').validate({
    rules: {
        registerEmail: {
            required: true,
            remote: 'ajax/ajax.validateEmail.php'
        }
    },
    messages: {
        registerEmail: {
           remote: 'E-Mail already taken'
        }
    }
});

PHP

<?php
header('Content-type: application/json');

$stmt = $mysqli->prepare("SELECT * FROM members m WHERE mEmail = ? LIMIT 1");
$stmt->bind_param('s', $_POST['registerEmail']);
$stmt->execute();
$stmt->store_result();
$stmt->fetch();

if ($stmt->num_rows == 1) {
    echo false;
}else{
    echo true;
}

我在这里做错了什么? 在此先感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

你需要在后端php文件中使用echo return truefalse

而不是

echo(json_encode(false));

变化

echo 'false';

TRUE

相同

Example

<强>解释

jQuery远程方法需要从远程网址输出truefalse

如果我们在那里回显,jQuery认为它是boolen true

如果我们回显false,jQuery会将其转换为布尔false

答案 1 :(得分:0)

并且存在语法错误:

$('#registerForm').validate({
    rules: {
        registerEmail: {
        required: true,
        remote: 'ajax/ajax.validateEmail.php'
    },

$('#registerForm').validate({
    rules: {
        registerEmail: {
            required: true,
            remote: 'ajax/ajax.validateEmail.php'
        }
    },

答案 2 :(得分:0)

好的,找到诀窍:

  • 编辑Javascript行:remote: { url: 'ajax/ajax.validateEmail.php', type:'post', async:false }
  • 已删除:header('Content-type: application/json');
  • 编辑返回行:echo json_encode( false );

希望这对任何人都有帮助:))