Php 正在获取要显示的我的AJAX错误消息

Php 正在获取要显示的我的AJAX错误消息,php,ajax,email,message,Php,Ajax,Email,Message,无论用户数据是否有效,我都会显示一条成功消息。我有一条错误消息,但无法显示它。我不是最好的编码员,所以要友善:) 此外,由于某种原因,当我通过表单收到电子邮件时,用户的电子邮件显示为user@MISSING_DOMAIN. 我的第一个问题需要优先处理,所以如果这个问题太多,你不必帮我 表格代码 <form action="contactformprocess3.php" method="post" class="myForm" > <input name="name" type

无论用户数据是否有效,我都会显示一条成功消息。我有一条错误消息,但无法显示它。我不是最好的编码员,所以要友善:)

此外,由于某种原因,当我通过表单收到电子邮件时,用户的电子邮件显示为user@MISSING_DOMAIN. 我的第一个问题需要优先处理,所以如果这个问题太多,你不必帮我

表格代码

<form action="contactformprocess3.php" method="post" class="myForm" >
<input name="name" type="text" id="f1" class="name-textinput"/><br />
    <script type="text/javascript">
        var f1 = new LiveValidation('f1');
        f1.add( Validate.Presence );
    </script>

<input name="email" type="text" id="f21" class="email-textinput"/><br />
    <script type="text/javascript">
        var f21 = new LiveValidation('f21');
            f21.add( Validate.Presence );
            f21.add( Validate.Email );
            f21.add( Validate.Length, { minimum: 10, maximum: 35 } );
    </script>

<textarea name="message" rows="9" cols="34" id="field3" class="message-textinput"></textarea>
    <span class="underform">
        <input type="reset" class="reset" />
        <input type="submit" value="submit" class="submit" />
    </span>
</form>
PHP电子邮件

<?php
$to = 'wj@pieceofmedesigns.com';
$subject = 'Piece of Me Designs';
$from = $_POST['email'];
$name = $_POST['name'];
$message = $_POST['message'];

if (mail($to, $subject, $message, 'From: '.$name.' &lt;'.$from.'&gt;')) {
    echo 'Message was sent successfully.';
} else {
    echo 'There was a problem sending your message.';
}

当无法联系服务器或服务器返回的状态代码不是200时,就会出现AJAX错误情况。这些问题包括文件找不到、脚本错误或网络问题

因此,要获得正确的消息,您需要验证数据。您可以在使用AJAX之前执行此操作,以确保发送到服务器脚本的数据已经过验证


您还需要让PHP脚本进行验证。这是一项确保安全的好政策。

Ed所说的完全正确。这意味着您正在ajax块的“error:”部分等待业务规则失效(未发送电子邮件),而此块中只显示技术错误

从技术角度来看,业务错误仍然返回“成功”;这只是应用程序必须处理的另一个“成功”答案

因此,基本上对您来说,解决方案是检查回声:

success: function(msg) {
    if (msg == 'Message was sent successfully.') {
       $('.success-box').fadeIn("slow").delay(3000).fadeOut("slow");
    } else {
       $('.failure-box').fadein("slow").delay(3000).fadeOut("slow");
    }
},
error: function(xhr, status, error, req) {
    //alert the user there was a technical problem
}
我可能建议您从php服务返回基于XML的回声,这样您就可以更轻松地管理标记和规范化响应

success: function(msg) {
    if (msg == 'Message was sent successfully.') {
       $('.success-box').fadeIn("slow").delay(3000).fadeOut("slow");
    } else {
       $('.failure-box').fadein("slow").delay(3000).fadeOut("slow");
    }
},
error: function(xhr, status, error, req) {
    //alert the user there was a technical problem
}