【问题标题】:JQuery Bassistance Form Email-check using remote使用远程的 JQuery Bassistance Form 电子邮件检查
【发布时间】:2013-05-16 21:19:00
【问题描述】:

我正在使用 JQuery Bassistance Form Validation 插件,一切正常,直到我尝试检查 MySQL 数据库中的现有电子邮件。

这是我的代码:

    $(document).ready(function(){
    $('#signup').validate({
    rules: {
            email: {
            required: true,
        email: true,
        remote: {
            type: 'POST',
            url: "email_check.php"
        }//end remote
        }//end email
    },//end rules
    messages: {
        email: {
            remote: "Email already in use."
        }//end email
    } //end messages
    }); //end validate

    }); //end ready

这是我的 email_check.php 文件:

    <? php

    $dbc = mysqli_connect('localhost', 'root', '', 'step1_db')
    or die('Error connecting to the database');

    $email = $_GET['email'];

    $check_email = "SELECT * FROM users WHERE email = '$email'";
    $existing = mysqli_query($dbc, $check_email);
    $num_rows = $existing->num_rows;    

    if ($num_rows == 1){
    echo json_encode(FALSE);

    }else{

    echo json_encode(TRUE);
    }

    mysqli_close($dbc);

    ?>

所以现在,如果我尝试将数据库中存在的电子邮件输入到我的表单中,我会收到无效电子邮件的默认错误消息,而不是“电子邮件已在使用中”。即使我输入了数据库中不存在的有效电子邮件,错误消息也不会消失。

我猜问题出在我的 php 文件中……我试过使用“return true”和“return false”,但它们也没有用。我将我的代码更改为 echo json_encode(FALSE) 从与此类似主题的答案中。 有没有人能指点一下这里发生了什么?

【问题讨论】:

  • 查看控制台时看到的原始响应是什么?
  • 我知道这可能只是一个简单的示例设置,但如果不是我想指出的是,您确实应该在将用户输入放入查询之前对其进行验证。
  • 我实际上认为问题可能出在 javascript 验证所期望的返回值上。 json_econde(true) 只返回字符串"true"
  • 感谢您的回复,OGC 尼克!通过验证,您的意思是使用 mysql_real_escape_string() 吗?另外,如何检查控制台的原始响应?抱歉,我对此很陌生,所以我的知识真的仅限于教给我的基础书籍和教程:(
  • 另外,我尝试使用 return true/false,但我的问题仍然存在。

标签: php jquery validation email-validation


【解决方案1】:

来自documentation

通过 $.ajax (XMLHttpRequest) 调用服务器端资源并获取 一个键/值对,对应于已验证元素的名称 及其作为 GET 参数的值。响应被评估为 JSON 并且对于有效元素必须为真,并且可以是任何假的、未定义的 或 null 用于无效元素,使用默认消息;或字符串, 例如。 “该名称已被占用,请尝试 peter123”显示为 错误信息。

看起来你的反应是正确的。看起来您的文件路径错误,因为您在控制台中收到 404 错误。修复路径,其余的看起来不错。

【讨论】:

  • 再次感谢!似乎我现在没有收到错误消息,但是错误消息未显示的问题仍然存在。如果我在输入中填写任何内容,我会收到默认错误“请输入有效的电子邮件地址”
【解决方案2】:

您的 php 文件将电子邮件变量设置为 GET,而远程验证功能设置为 POST,更改其中一个以匹配您应该设置

【讨论】:

  • 太棒了!非常感谢 Jay Rizzi,就是这样!我希望我能给你和 ogc-nick 提供这么多帮助的名声,但我必须等到我自己得到 15 分... :)
猜你喜欢
  • 2017-09-13
  • 2013-07-23
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 2012-02-09
相关资源
最近更新 更多