jQuery验证远程方法使用以检查用户名是不是已经存在
Posted
技术标签:
【中文标题】jQuery验证远程方法使用以检查用户名是不是已经存在【英文标题】:jQuery Validate remote method usage to check if username already existsjQuery验证远程方法使用以检查用户名是否已经存在 【发布时间】:2013-05-10 17:42:00 【问题描述】:我想使用 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
提前致谢。
【问题讨论】:
你能再解释一下这个问题吗?哪一部分似乎有效,哪一部分无效? 在注册页面,不检查用户是否被带走。 打开网络标签。是否在提交时将请求发送到“check-username.php”页面?如果有,响应代码是什么(200,404,500 等),响应内容是什么? 好的,很抱歉,没有向 check-username.php 发送请求,该文件位于错误的位置。我修复了它,但现在它总是显示用户名已被使用,即使它不是! 【参考方案1】:我已经设法通过更改我使用的 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;
?>
感谢大家的帮助:)
【讨论】:
5 年过去了,仍然对我有帮助。来自我的支持【参考方案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 Remote validation
【讨论】:
实际上确实有点作用。不幸的是,我对 jQuery Mobile 并不了解。如果其他人是,他们应该随时纠正我们。 :)以上是关于jQuery验证远程方法使用以检查用户名是不是已经存在的主要内容,如果未能解决你的问题,请参考以下文章
jquery的closest方法的使用以及其与parents方法之间的差异
是否可以使用 jQuery 加密 AJAX 调用以进行身份验证?