jquery远程验证不提交表单

时间:2014-07-01 00:26:40

标签: php jquery forms

我无法提交此基本表单验证。我读到遥控器是原因。有没有办法解决它,因为在注册新用户之前我需要它来检查用户名是否存在?

如果重要的话,我正在使用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>

2 个答案:

答案 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注入。在准备之后,您需要占位符并绑定变量的值。