我想使用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."
}
}
});
签username.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
提前致谢。
答案 0 :(得分:7)
我设法通过改变我使用的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;
?>
感谢大家的帮助:)
答案 1 :(得分:2)
我有两个资源可供查看。
来自validate插件的官方示例: 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 Remote validation