使用jQuery验证插件"remote"选择


Using the jQuery validate plugin with the "remote" option

我正在使用jQuery验证插件及其远程选项来检查输入字段中用户名的存在性。我使用以下代码:

 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。然后,您可以通过使用options对象中的messages参数使用自定义错误消息来设置错误消息。

我也认为你的数据参数配置错误。文档里是这样的。不过,你说它有用,所以可能是不同的版本?(http://docs.jquery.com/Plugins/Validation/Methods/remote选项)

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并显示返回的文本)。

另外,使用header('content-type:text/plain');

将输出设置为text/javascript或text/plain也很重要。

所以在php中,当返回值时,你应该注意返回值的类型,如下所示:

回声"真正的";//=> true,布尔值。说明验证结果为真,一切正常。

回声"假";//=> false,布尔值。表示验证结果错误,并显示在验证器对象

中配置的消息。

呼应的"假";//=> "false",字符串。说明验证的结果是错误的,并且返回的字符串将显示为错误。