[英]jquery remote validation is not submitting the form
我无法提交此基本表单验证。 我读到遥控器是原因。 有什么办法可以解决它,因为我需要它在注册新用户之前检查用户名是否存在?
如果有问题,我正在使用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>
一些东西;
第一:您必须保护自己免受SQL注入的侵害-例如,参见什么是SQL注入?
第二:您的php必须输出 “ true”或“ false”值,而不返回它。 根据远程方法文档,它还可以输出json编码的错误消息,例如"The user does not exist"
第三:您可以使用error_log()函数调试您的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");
}
尽管您没有指定确切的问题是什么,但是您没有将任何值发送回validate
插件。
该插件需要能够评估为有效json的内容,尽管您具有return
语句,但实际上并未输出任何内容。
您的php脚本的结尾应类似于:
if($rs > 0){
echo json_encode(false); // returns "false"
}else{
echo json_encode(true); // returns "true"
}
另外,准备语句的原因是为了保护自己免受sql注入。 准备之后,您将需要一个占位符并绑定变量的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.