无论用户数据是否有效,我都会显示成功消息。我有一条错误消息,但我无法显示它。我不是最好的编码器,所以要好看:)。
此外,由于某些原因,当我通过表单收到电子邮件时,用户的电子邮件将显示为用户@ 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 EMAIL
<?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.' <'.$from.'>')) {
echo 'Message was sent successfully.';
} else {
echo 'There was a problem sending your message.';
}
&GT?;
答案 0 :(得分:2)
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的回声,然后您可以更轻松地管理标记和规范化响应。
答案 1 :(得分:1)
当无法联系服务器或服务器返回的状态代码不是200时,就会出现AJAX错误情况。这样的事情是找不到文件,脚本错误或网络问题,
因此,要获得正确的消息,您需要验证数据。您可以在使用AJAX之前执行此操作,以确保已发送到服务器脚本的数据已经过验证。
此外,您需要让PHP脚本进行验证。这是确保安全的好政策。