2013-04-01 166 views
-2

我在使用jQuery的验证插件一些奇怪的问题。这似乎被问了几次,但我找不到我的问题的答案。我有一个形式,而我想看看是否电子邮件已经进入了 - 如果有,用户不应该能够提交表单。我正在使用FirePHP输出各种变量。这是我注意到我的查询返回值总是“1”(这是错误的)。但是,当我手动查询我的数据库(使用PhpMyAdmin),正确答案(“0”)出现。jQuery验证和验证插件

这里是我的JS:

// validate signup form on keyup and submit 
$("#register").validate({ 
    rules: { 
     ...... 
     email: { 
      required: true, 
      email: true, 
      remote: "check_email.php" , async:false 
     }, 
    }, 
    messages: { 
        ...... 
     email: {required: "Please enter an email address", email: "Please enter a valid email address", remote: "This email is already registered" }, 
     } 
    } 
}); 

});

这里是数据库连接的东西后,我的PHP ...

$form_email = $_GET['email']; 
fb($form_email); 


$sql = "SELECT COUNT(*) AS num_rows FROM users WHERE email = " . "'" . $form_email . "'"; 
fb($sql); 
$result = $conn->query($sql); 
fb($result->num_rows); 

if ($result->num_rows == 0) { 
    echo 'true'; 
    fb("true"); 
} else { 
     echo 'false'; 
    fb("false"); 
} 

计数始终返回“1”,甚至当我输入一个电子邮件不存在。

我还试图返回

echo json_encode('true'); 

,因为我读的地方,可能会奏效,但它并没有帮助。为什么我的回应总是在我的PHP错误?

+0

'async'不是一个规则。检查你的语法。 – Sparky

回答

0

remote规则的语法不正确:

rules: { 
    ...... 
    email: { 
     required: true, 
     email: true, 
     remote: "check_email.php" , async:false 
    }, 
} 

你写它的方式,插件是看到async只是另一种规则。由于没有像async这样的“规则”,插件会窒息。

Following the documentation,试试这个:

rules: { 
    ...... 
    email: { 
     required: true, 
     email: true, 
     remote: "check_email.php" 
    } 
} 

或本...

rules: { 
    ...... 
    email: { 
     required: true, 
     email: true, 
     remote: { 
      url: "check_email.php", 
      async: false 
     } 
    } 
} 

DEMO:http://jsfiddle.net/KkBSY/

+0

改变了我的js为“远程‘check_email.php’,但仍然没有运气 –

+0

@KathyLyons,你可以看到,该插件在这里工作:http://jsfiddle.net/KkBSY/但是有太多从你失踪OP为我提供了更多帮助。表单的呈现HTML在哪里? – Sparky