2011-07-21 19 views
0

我使用jQuery validate插件及其远程选项来检查输入字段中是否存在用户名。我用这个代码:使用带有“remote”选项的jQuery validate插件

remote : { 
     url :'ajax_php/admin/checking.php', 
     type :'post', 
     data : { 
     type:'username' 
}} 

我已经注意到,请求网址有回调参数附加,即使我设置的类型要求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"); 
} 

这是我想知道:

  • 什么是回调参数?
  • 如何解决“显示错误信息”的问题?

回答

0

尝试改变:

echo("username is already exists"); 

echo("false"); 
0

我认为你必须在你的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脚本返回 '真' 或 '假'。您可以使用jQuery验证插件

$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" 
    } 
    } 
}) 
设置错误消息
0

返回的值被认为是一个布尔值(true/false)或一个字符串(将被视为false并显示返回的文本)。另外,使用头文件('content-type:text/plain')将输出设置为text/javascript或text/plain非常重要。

所以在PHP中,返回值的时候,你要注意返回值的类型,如下所示:

呼应“真”; // => true,一个布尔值。 说验证的结果是真实的,一切都很好。

echo'false'; // => false,一个布尔值。 说验证的结果是错误的,并显示验证器对象中配置的消息

echo'“false”'; // =>“false”,一个字符串。 说验证的结果是错误的,并显示返回的字符串将显示为错误。

相关问题