使用AJAX和PHP验证电子邮件

时间:2014-08-08 20:16:32

标签: php jquery ajax validation email

我想提交我的表单,并且AJAX调用应该将该数据发送到我的php文件。在我的php文件中是filter_var的电子邮件验证,如果验证返回false,则响应应该返回到Javascript。除了验证部分,它也很有效。但是,每当我想提交并检查它是否是有效的电子邮件时,它都会返回false"请输入有效的电子邮件"。如果是有效或错误的电子邮件地址则相等。


更新 - 09.08.2014 / 04:12
现在它基本上是但是如果它没有错误消息我得到一个合乎逻辑的问题Cannot read proberty "isError" of null。但是不知道如何避免该问题将其正确传递回javascript。

HTML

<form action="submit.php" id="SubmitForm" method="post">
  <input id="mail" name="mail" type="text" />
 </form>
 <button id="submitAll">
   <span>Submit</span>
 </button>

的Javascript

function submit() {
    var $form = $('form#SubmitForm');
    $.post(
    $form.attr('action'),
    $form.serialize(),

    function (data) {
        if (data.isError) {
            $errMsg.empty().text('Please enter a valid email');
        } else {
            document.location.href = "submit.php"
        }
    },'json'); }

PHP

$profileEmail  = $_POST['mail'];
$errorMessages = array();

if(!filter_var($profileEmail, FILTER_VALIDATE_EMAIL)){
    $errorMessages[] = "* Please enter a valid e-mail";
} else {
    $errorMessages[] = "* Valid e-mail";
}

if (!empty($errorMessages)) {
    die(json_encode(array('isError' => true, 'errorMessages' => $errorMessages)));
}

2 个答案:

答案 0 :(得分:1)

您的问题很简单 - 您已在输入字段中输入ID(mail),但 a name,因此序列化不是&#39 ; t working - 你只是向服务器发送一个空的查询字符串。

你需要:

<input id="mail" name="mail" type="text" />

我总是同时使用名称和ID,因为表单提交需要前者,但使用后者更容易使用DOM操作。

编辑以避免在修复上述问题后发现的新问题,只需确保您的脚本始终返回一些有效的JSON,即使它只是{{1} }。您已经向服务器询问了一些JSON - 您必须返回一些。

答案 1 :(得分:0)

更新 - 09.08.2014 / 04:28
现在它有效!我意识到我的if(data.isError)运营商错了。以下代码有效。感谢您提供有用的输入来解决问题。 :)


HTML

<form action="submit.php" id="SubmitForm" method="post">
    <input id="mail" name="mail" type="text" />
</form>
<button id="submitAll">
    <span>Submit</span>
</button>


的Javascript

function submit() {
    var $form = $('form#SubmitForm');
    $.post(
    $form.attr('action'),
    $form.serialize(),

    function (data) {
        if (data && data.isError) {
            $errMsg.empty().text('Please enter a valid email');
        } else {
            document.location.href = "submit.php"
        }
    }, 'json');
}


PHP

$profileEmail  = $_POST['mail'];
$errorMessages = array();

if(!filter_var($profileEmail, FILTER_VALIDATE_EMAIL)){
    $errorMessages[] = "* Please enter a valid e-mail";
} else {
    $errorMessages[] = "* Valid e-mail";
}

if (!empty($errorMessages)) {
    die(json_encode(array('isError' => true, 'errorMessages' => $errorMessages)));
}