我无法提交此基本表单验证。我读到遥控器是原因。有没有办法解决它,因为在注册新用户之前我需要它来检查用户名是否存在?
如果重要的话,我正在使用jQuery Validation Plugin v1.12.0
$("#regForm").validate({
rules: {
username: {
remote: {
url: "username_db.php",
type: "post"
}
}
},
messages: {
username: {
remote: "Username already in use"
}
}
});
PHP:
require_once 'db.php';
if ( $conn = connect() ) {
$row = $conn->prepare("SELECT * FROM users WHERE username = '".$_REQUEST['username']."'");
$row->execute();
$rs = $row->rowCount();
if($rs > 0){
echo 'false';
}else{
echo 'true';
}
}
编辑:
<form action="" method="post" id="regForm" name="regForm">
<input type="text" name="username">
<input type="submit" name="go" value="GO">
</form>
答案 0 :(得分:0)
一些事情;
首先:你必须保护自己免受SQL注入 - 例如参见What is SQL injection?
第二:你的php必须输出&#39; true&#39;或者&#39; false&#39;价值,不归还。根据{{3}}文档,它还可以输出json编码的错误消息,如"The user does not exist"
第三:您可以使用remote-method函数调试PHP代码并确保它正在运行 - 消息显示在php日志文件中。
所以请尝试使用PHP代码:
require_once 'db.php';
//(Using PDO for db access - see http://php.net/manual/en/book.pdo.php )
if ($pdo = connect() ) {
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindValue(":username", $_REQUEST['username']);
if ( $stmt->fetchAll() )
echo "true";
else
echo json_encode("User does not exist");
}
答案 1 :(得分:0)
虽然您尚未指定确切的问题,但您并未向validate
插件发回任何值。
该插件需要一些评估为有效json的内容,尽管你有一个return
语句,但实际上并没有输出任何内容。
php脚本的结尾应该是:
if($rs > 0){
echo json_encode(false); // returns "false"
}else{
echo json_encode(true); // returns "true"
}
此外,您准备语句的原因是为了保护自己免受SQL注入。在准备之后,您需要占位符并绑定变量的值。