6

我想使用 jQuery.validate 验证用户名是否存在于数据库中,所以这是我目前所拥有的:

jQuery:

    $("#signupForm").validate({
        rules: {
            username: {
                required: true,
                minlength: 3,
                remote: "check-username.php"
                }
            },
        messages: {
            username:{
                remote: "This username is already taken! Try another."
            }
        }
  });

检查用户名.php:

<?php

require_once "./source/includes/data.php";
header('Content-type: application/json');

$name = mysql_real_escape_string($_POST['username']);

$check_for_username = mysql_query("SELECT username FROM mmh_user_info WHERE username='$name'");

if (mysql_num_rows($check_for_username) > 0) {
    $output = true;
} else {
    $output = false;
}
echo json_encode($output);
?>

此代码始终显示用户名被使用的错误,即使它不是。

我正在使用 jQuery Mobile 1.9.1

提前致谢。

4

2 回答 2

8

我已经设法通过更改我正在使用的 PHP 技术来实现它,这是我的 PHP:

<?php
require_once "./source/includes/data.php";
header('Content-type: application/json');
$request = $_REQUEST['username'];

$query = mysql_query("SELECT * FROM mmh_user_info WHERE username ='$username'");
$result = mysql_num_rows($query);
if ($result == 0){
$valid = 'true';}
else{
$valid = 'false';
}
echo $valid;
?>

谢谢大家在这里的帮助:)

于 2013-05-16T11:38:50.113 回答
2

我有两个资源可供查看。

来自验证插件的官方示例:http: //jquery.bassistance.de/validate/demo/milk/

jQuery 论坛解决方案:http: //forum.jquery.com/topic/jquery-validation-plugin-remote-validation-problem-locks-up

可能的解决方案是,据我所知,响应不需要进行 json 编码。由于 json 需要键值对,因此仅提供值是行不通的。因此,请尝试将其作为“真”或“假”字符串回显。

其次,验证使用 GET 作为表单提交方法,而不是 POST。

注意:刚刚找到可能的解决方案问题 jQuery 远程验证

于 2013-05-16T00:32:25.917 回答