Javascript 从AJAX向php文件发送信息并从php获得响应,而不是在我想要的时候

Javascript 从AJAX向php文件发送信息并从php获得响应,而不是在我想要的时候,javascript,php,ajax,forms,Javascript,Php,Ajax,Forms,我有一个我正在处理的联系人页面,我对它进行了编码,这样,如果通过发送无效的电子邮件,php会发回一个响应,但现在的编码方式是,它发回的消息是缺少一个字段,或者根本没有填写任何内容,然后有人单击“发送”。你可以在 我仍然希望正常的HTML5“必需”字段发生,然后如果电子邮件字段不适合php else响应“无效的电子邮件,请提供有效的电子邮件地址。”然后显示 我该怎么做 if (filter_var($email, FILTER_VALIDATE_EMAIL)) { // this line che

我有一个我正在处理的联系人页面,我对它进行了编码,这样,如果通过发送无效的电子邮件,php会发回一个响应,但现在的编码方式是,它发回的消息是缺少一个字段,或者根本没有填写任何内容,然后有人单击“发送”。你可以在

我仍然希望正常的HTML5“必需”字段发生,然后如果电子邮件字段不适合php else响应<代码>“无效的电子邮件,请提供有效的电子邮件地址。”然后显示

我该怎么做

if (filter_var($email, FILTER_VALIDATE_EMAIL)) { // this line checks that we have a valid email address
mail($to, $subject, $message, $headers); //This method sends the mail.
echo "Your email was sent!"; // success message
}else{
echo "Invalid Email, please provide a valid email address.";
}
AJax调用

<script>
            $(document).ready(function(){

                $('#submit').click(function(){

                    $.post("contactSend.php", $("#mycontactform").serialize(),  function(response) {
                        if (response == 'Your email was sent!') {
                            $('#contactMessageStatus').append(response);
                            $('#contactMessageStatus').addClass("contactSuccess");
                            $('html, body').animate({
                                scrollTop: $("#contactMessageStatus").offset().top
                             }, 2000);
                            $('#contactMessageStatus').html(response);
                            $('#contactMessageStatus').delay(5500).fadeOut(400);
                        }
                        else {
                            $('#contactMessageStatus').append(response);
                            $('#contactMessageStatus').addClass("contactFail");
                            $('html, body').animate({
                                scrollTop: $("#contactMessageStatus").offset().top
                             }, 2000);
                            $('#contactMessageStatus').html(response);
                            $('#contactMessageStatus').delay(5500).fadeOut(400);
                        }
                    });
                    return false;
                });
            });
        </script>

$(文档).ready(函数(){
$(“#提交”)。单击(函数(){
$.post(“contactSend.php”,$(“#mycontactform”).serialize(),函数(响应){
如果(响应==“您的电子邮件已发送!”){
$('#contactMessageStatus')。追加(响应);
$(“#contactMessageStatus”).addClass(“contactSuccess”);
$('html,body')。设置动画({
scrollTop:$(“#contactMessageStatus”).offset().top
}, 2000);
$('#contactMessageStatus').html(响应);
$('#contactMessageStatus')。延迟(5500)。淡出(400);
}
否则{
$('#contactMessageStatus')。追加(响应);
$(“#contactMessageStatus”).addClass(“contactFail”);
$('html,body')。设置动画({
scrollTop:$(“#contactMessageStatus”).offset().top
}, 2000);
$('#contactMessageStatus').html(响应);
$('#contactMessageStatus')。延迟(5500)。淡出(400);
}
});
返回false;
});
});
形式


您需要先检查电子邮件地址是否已填写。像这样的东西应该可以

if (!empty($email)) { 
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 

        //Should also do a check on the mail function
        if (mail($to, $subject, $message, $headers)) {
            echo "Your email was sent!"; // success message
        } else {
            echo "Mail could not be sent!"; // failed message
        }

    } else { 
        //Invalid email
        echo "Invalid Email, please provide a valid email address.";
    }

} else {
    //$email was not filled out
}

您是否尝试添加出口;在你无效的电子邮件回复之后?这会不会使邮件不显示?如果你把出口关上,就不会显示;消息后:echo“无效电子邮件,请提供有效的电子邮件地址。”;出口仍然可以通过退出获得它;如果我点击submit而没有在联系人表单中填写任何信息,我仍然会显示无效的电子邮件div。我不想让它出现,除非它实际上是一封无效的电子邮件。我希望显示所需的消息。我在新的else行中收到此错误。。解析错误:语法错误,意外的'else'(T_else),忘记关闭其中的if语句。谢谢!这有点离题了,但是在我尝试发送它并且出现错误后,我必须再次重新加载页面以尝试发送任何内容。有没有一种方法可以让我再次尝试重新加载发送它?是的,不使用$.post,请查看。另一个技巧是,在调试javascript时,浏览器控制台是必不可少的。您可以使用
console.log(“测试”)在javascript中返回调试所需的任何内容。没问题,如果您仍然遇到问题,请PM我,我会仔细查看。祝你好运
if (!empty($email)) { 
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 

        //Should also do a check on the mail function
        if (mail($to, $subject, $message, $headers)) {
            echo "Your email was sent!"; // success message
        } else {
            echo "Mail could not be sent!"; // failed message
        }

    } else { 
        //Invalid email
        echo "Invalid Email, please provide a valid email address.";
    }

} else {
    //$email was not filled out
}