我遇到了PHP联系表单的问题.它发送了空的电子邮件,修复后,现在它不发送电子邮件,但重定向到一个空白页面说“已发送”(在send-email.PHP文件中编码..
它应该在没有离开活动页面的情况下显示成功消息,使用AJAX.不知道出了什么问题.任何帮助赞赏.问候,
这是头部;
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<style>
.error { display:none; }
.success { display:none; }
</style>
<script type="text/javascript">
$(document).ready(function(){
$('#send_message').submit(function(e){
e.preventDefault();
var error = false;
var name = $('#name').val();
var email = $('#email').val();
var message = $('#message').val();
if(name.length == 0){
var error = true;
$('#name_error').fadeIn(500);
} else {
$('#name_error').fadeOut(500);
}
if(email.length == 0 || email.indexOf('@') == '-1'){
var error = true;
$('#email_error').fadeIn(500);
} else {
$('#email_error').fadeOut(500);
}
if(message.length == 0){
var error = true;
$('#message_error').fadeIn(500);
} else {
$('#message_error').fadeOut(500);
} if(error == false){
$('#cf_submit_p').attr({'disabled' : 'true', 'value' : 'Gönderiliyor...' });
$.post("send_email.PHP", $("#contact_form").serialize(),function(result){
if(result == 'sent'){
$('#cf_submit_p').remove();
$('#mail_success').fadeIn(500);
} else {
$('#mail_fail').fadeIn(500);
$('#cf_submit_p').removeAttr('disabled').attr('value', 'Gönder');
}
});
}
});
});
</script>
这是身体部分;
<div class="container-fluid">
<p id="returnmessage"></p>
<form action="send_email.PHP" id="contact_form" method="post">
<h2 style="font-size:14px;line-height:18px;font-weight:600;padding-bottom:0;">Bize Yazın</h2>
<ul class="contactform">
<li>
<div id="name_error" class="error" style="color:#aa3939; font-size:8px; line-height:8px;"> <i class="fa fa-exclamation"></i> Lütfen adınızı giriniz.</div>
<span class="contact-input-icon" style="text-align:left"><i class="fa fa-user"></i></span>
<div class="input-field">
<input type="text" style="border:1px solid rgba(220,220,220,0.5)" name="name" id="name" value="" class="required requiredField" placeholder="Ad Soyad"/>
</div>
</li>
<li>
<div id="email_error" class="error" style="color:#aa3939; font-size:8px; line-height:8px;"> <i class="fa fa-exclamation"></i> Lütfen eposta adresinizi giriniz.</div>
<span class="contact-input-icon"><i class="fa fa-envelope"></i></span>
<div class="input-field">
<input type="email" style="border:1px solid rgba(220,220,220,0.5)" name="email" id="email" value="" class="required requiredField email" placeholder="Eposta"/>
</div>
</li>
<li class="textarea">
<div id="message_error" class="error" style="color:#aa3939; font-size:8px; line-height:8px;"> <i class="fa fa-exclamation"></i> Lütfen mesajınızı giriniz.</div>
<span class="contact-input-icon"><i class="fa fa-pencil"></i></span>
<div class="input-field">
<textarea name="message" style="border:1px solid rgba(220,220,220,0.5)" id="message" rows="6" cols="20" class="required requiredField" placeholder="Mesajınız"></textarea>
</div>
<div id="mail_success" class="success" style="color:#00CC00"><i class="fa fa-check"></i> İlginiz için teşekkürler. En kısa sürede sizinle irtibata geçeceğiz.</div>
<div id="mail_fail" class="error" style="color:#aa3939"><i class="fa fa-times"></i> Üzgünüz, mesajınız iletilemedi. Daha sonra lütfen tekrar deneyin.</div>
</li>
<li class="buttons">
<div id="cf_submit_p">
<input type="hidden" style="border:1px solid rgba(220,220,220,0.5)" name="submitted" id="submitted" value="true" />
<button type="submit" style="border:1px solid #3f97cf" class="button" id="send_message"><i class="fa fa-paper-plane-o" style="font-size:20px;color:#3f97cf"></i></button>
</div>
</li>
</ul>
</form>
</div> <!--end container-fluid-->
这是send_email.PHP;
<?PHP
$autoResponse = true; //if set to true auto response email will be sent, if you don't want autoresponse set it to false
$autoResponseSubject = "İletişim Formu";
$autoResponseMessage = "<html>
<head>
<title>This is your HTML email!</title>
</head>
<body>
<div style='width:700px; font-family:Arial, Helvetica, sans-serif; font-size:44px; color:#CCC; text-align:center; margin:0 auto; padding:20px;'>THIS IS YOUR</div>/>
</body>
</html>";
$autoResponseHeaders = "Kimden: yeterkara90@gmail.com";
$autoResponseHeaders .= "MIME-Version: 1.0"."\r\n";
$autoResponseHeaders .= "Content-type: text/html; charset=iso-8859-1"."\r\n";
//we need to get our variables first
$to = 'yeterkara90@gmail.com'; //the address to which the email will be sent
$name = $_POST['name'];
$email = $_POST['email'];
$subject = "Site İletişim Formu";
$msg = $_POST['message'];
$message = "Kimden: $name "."\r\n"."Eposta: $to "."\r\n";
/*the $header variable is for the additional headers in the mail function,
we are asigning 2 values, first one is FROM and the second one is REPLY-TO.
That way when we want to reply the email gmail(or yahoo or hotmail...) will kNow
who are we replying to. */
$headers = "From: $email\r\n";
$headers .= "Reply-To: $email\r\n";
if(mail($to, $subject, $message, $headers)){
if($autoResponse === true){
mail($email, $autoResponseSubject, $autoResponseMessage, $autoResponseHeaders);
}
echo 'sent'; // we are sending this text to the ajax request telling it that the mail is sent..
}else{
echo 'Failed';// ... or this one to tell it that it wasn't sent
}
?>
解决方法:
你应该在jQuery中为你的提交函数返回false,表示不提交.它不是重定向,而是提交给send_email.PHP.添加返回false后的jquery代码.
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<style>
.error { display:none; }
.success { display:none; }
</style>
<script type="text/javascript">
$(document).ready(function(){
$('#send_message').submit(function(e){
e.preventDefault();
var error = false;
var name = $('#name').val();
var email = $('#email').val();
var message = $('#message').val();
if(name.length == 0){
var error = true;
$('#name_error').fadeIn(500);
} else {
$('#name_error').fadeOut(500);
}
if(email.length == 0 || email.indexOf('@') == '-1'){
var error = true;
$('#email_error').fadeIn(500);
} else {
$('#email_error').fadeOut(500);
}
if(message.length == 0){
var error = true;
$('#message_error').fadeIn(500);
} else {
$('#message_error').fadeOut(500);
} if(error == false){
$('#cf_submit_p').attr({'disabled' : 'true', 'value' : 'Gönderiliyor...' });
$.post("send_email.PHP", $("#contact_form").serialize(),function(result){
if(result == 'sent'){
$('#cf_submit_p').remove();
$('#mail_success').fadeIn(500);
} else {
$('#mail_fail').fadeIn(500);
$('#cf_submit_p').removeAttr('disabled').attr('value', 'Gönder');
}
});
}
return false;
});
});
</script>
在您的PHP代码中,您应该在向您发送电子邮件之前检查数据是否已发布.像这样的东西
<?PHP
$autoResponse = true; //if set to true auto response email will be sent, if you don't want autoresponse set it to false
$autoResponseSubject = "İletişim Formu";
$autoResponseMessage = "<html>
<head>
<title>This is your HTML email!</title>
</head>
<body>
<div style='width:700px; font-family:Arial, Helvetica, sans-serif; font-size:44px; color:#CCC; text-align:center; margin:0 auto; padding:20px;'>THIS IS YOUR</div>/>
</body>
</html>";
$autoResponseHeaders = "Kimden: yeterkara90@gmail.com";
$autoResponseHeaders .= "MIME-Version: 1.0"."\r\n";
$autoResponseHeaders .= "Content-type: text/html; charset=iso-8859-1"."\r\n";
//we need to get our variables first
$to = 'yeterkara90@gmail.com'; //the address to which the email will be sent
$name = $_POST['name'];
$email = $_POST['email'];
$subject = "Site İletişim Formu";
$msg = $_POST['message'];
$message = "Kimden: $name "."\r\n"."Eposta: $to "."\r\n";
/*the $header variable is for the additional headers in the mail function,
we are asigning 2 values, first one is FROM and the second one is REPLY-TO.
That way when we want to reply the email gmail(or yahoo or hotmail...) will kNow
who are we replying to. */
$headers = "From: $email\r\n";
$headers .= "Reply-To: $email\r\n";
if( $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['email']) ){
if(mail($to, $subject, $message, $headers)){
if($autoResponse === true){
mail($email, $autoResponseSubject, $autoResponseMessage, $autoResponseHeaders);
}
echo 'sent'; // we are sending this text to the ajax request telling it that the mail is sent..
}else{
echo 'Failed';// ... or this one to tell it that it wasn't sent
}
}
?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。