使用带有“remote”选项的jQuery validate插件
我正在使用jQuery validate插件及其远程选项来检查输入字段中是否存在用户名。 我用这个代码:
remote : { url :'ajax_php/admin/checking.php', type :'post', data : { type:'username' }}
我注意到请求URL附加了一个回调参数,即使我将类型请求设置为post
:
http://localhost/lopoli2/ajax_php/admin/checking.php?callback=jQuery15104128487491980195_1311232389069
我的PHP脚本工作正常,对于有效的用户名和无效用户名的字符串返回true
。 但是没有出现错误消息! 我的PHP文件简而言之如下:
$check = mysql_query("select `username` from `user_tbl` where `username`='".$_POST['username']."' ",$conn) or die('Error In DB !'); if (mysql_num_rows($check)>0){ echo("username is already exists"); }else{ echo("true"); }
这是我想知道的:
- 回调参数是什么?
- 如何解决“显示错误信息”问题?
尝试改变:
echo("username is already exists");
至
echo("false");
我认为你必须在php脚本中返回true或false。 然后,您可以使用选项对象中的messages参数使用自定义错误消息来设置错误消息。
另外我认为您的数据参数配置错误。 它在文档中看起来像这样。 虽然,你提到它有用,所以也许不同的版本? (http://docs.jquery.com/Plugins/Validation/Methods/remote#options)
remote: { url: 'ajax_php/admin/checking.php',, type: "post", data: { username: function() { return $("#username").val(); } } }
然后在你的php脚本中返回’true’或’false’。 您可以使用jquery validate插件设置错误消息
$check = mysql_query("select `username` from `user_tbl` where `username`='".$_POST['username']."' ",$conn) or die('Error In DB !'); if (mysql_num_rows($check)>0){ echo 'false'; }else{ echo "true"; }
以下是添加消息参数的方法(http://docs.jquery.com/Plugins/Validation/validate#options)
$(".selector").validate({ rules: yourRules, messages: { username: { remote: "Username already exists" } } })
返回的值被认为是布尔值(true / false)或字符串(将被处理为false并显示返回的文本)。
此外,使用标题(’content-type:text / plain’)将输出设置为text / javascript或text / plain非常重要;
所以在php中,当返回值时,你应该注意返回值的类型,如下所示:
echo’true’; // => true,一个布尔值。 说validation的结果是真的,一切都很好。
echo’false’; // => false,一个布尔值。 说validation的结果是错误的,并在validation器对象中显示配置的消息
echo’“false”’; // =>“false”,一个字符串。 说validation的结果是错误的并且显示返回的字符串将显示为错误。