使用带有“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的结果是错误的并且显示返回的字符串将显示为错误。