【问题标题】:Getting my AJAX error message to display让我的 AJAX 错误消息显示
【发布时间】:2012-06-08 04:22:41
【问题描述】:

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

另外,由于某种原因,当我通过表单收到电子邮件时,用户的电子邮件显示为 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>

AJAX

$(function() {
$('.myForm').submit(function(e) {
    e.preventDefault();
    var form = $(this);
    var post_url = form.attr('action');
    var post_data = form.serialize();
    $.ajax({
        type: 'POST',
        url: post_url,
        data: post_data,
        success: function(msg) {
            $('.success-box').fadeIn("slow").delay(3000).fadeOut("slow");
        },
        error: function(xhr, status, error, req) {
            $('.failure-box').fadein("slow").delay(3000).fadeOut("slow");
        }

    });
  });
});

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.';
}

?>

【问题讨论】:

    标签: php ajax email message


    【解决方案1】:

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

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

    所以,基本上你的解决方案是检查回声:

    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 的回显,然后您可以更轻松地管理标签和标准化响应。

    【讨论】:

      【解决方案2】:

      当无法联系服务器或服务器返回不是 200 的状态码时,会发生 AJAX 错误情况。此类情况是找不到文件、脚本错误或网络问题,

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

      您还需要获取您的 PHP 脚本来进行验证。这是确保安全的好政策。

      【讨论】:

        猜你喜欢
        • 2019-05-22
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-05
        • 2020-12-01
        • 2016-02-15
        相关资源
        最近更新 更多