jQuery表单远程验证

时间:2014-06-04 09:28:40

标签: jquery jquery-validate

我发现我在jQuery远程验证中发现了错误。我试图在谷歌搜索任何解决方案,我尝试了所有但没有运气它仍然有错误。尽管数据库中不存在sno,但它总是返回false。请帮帮我。谢谢

这是我的form.js示例代码:

jQuery("#form1").validate({
        rules: {   
            industry: "required",
            sno: {
                required:true,
                remote: "check-sno.php"
            },
messages: {
            sno: {
                required:"Please Enter Source Number",
                remote: "S.No is already taken."
            },

这是我的check-sno.php代码:

<?php

$mysqli = new mysqli('localhost','root','','csci311');

if (!empty($_POST['sno']))
{
    $sno = $mysqli->real_escape_string($_POST['sno']);
    $query = "SELECT sno FROM prospects WHERE sno = '{$sno}'";
    $results = $mysqli->query($query);
    if($results->num_rows == 0)
    {
        echo "true";  
    }
    else
    {
        echo "false"; 
    }
}
else
{
    echo "false";
}

?>

我有没有查询错误?请纠正我,谢谢:)

FYI,form.js中的远程函数。它总是提示远程消息我是否输入现有的sno或不是现有的sno。

验证后我需要返回任何值吗?

1 个答案:

答案 0 :(得分:0)

Refer to the documentation

  

通过jQuery.ajax(XMLHttpRequest)调用serverside资源,并获取与已验证元素的名称对应的键/值对及其值作为GET参数。响应被评估为JSON,对于有效元素必须为true,对于无效元素,可以使用默认消息为falseundefinednull;或者是一个字符串...

默认情况下,remote方法使用 GET 方法,但是,您的PHP正在寻找 POST 变量$_POST。 ..

if (!empty($_POST['sno'])) ....

由于$_POST使用GET时没有remote变量,因此它始终为empty,因此您始终会回显false并触发验证消息。< / p>

只需将type选项添加到remote规则,即可将默认方法从GET更改为POST ...

sno: {
    required:true,
    remote: {
        url: "check-sno.php",
        type: "post"   // <- use the POST method
    }
},

BTW- remote规则/方法将接受与jQuery .ajax()相同的所有选项。

修改

如果你的PHP坏了,除了验证消息之外你什么都得不到。根据文档,falseundefinednull响应都会触发验证错误。换句话说,您必须进行一些故障排除,以独立验证您的PHP是否正常运行。