【发布时间】:2014-10-24 16:09:50
【问题描述】:
大家早上好,作为重新学习网络编程的尝试,我正在尝试在一个自包含的 html 文件中制作一个简单的邮件表单,所以没有包含,没有使用 HTML php 和 Ajax 的外部引用。关键是制作一个独立的html,提交表单时不会刷新。
我的html表单如下:
<form class="form2" action="" method="POST" name="myForm" id="myForm">
<div class="formtitle">Inscrivez-vous à notre infolettre</div>
<div class="input">
<div class="inputtext">Nom: </div>
<div class="inputcontent">
<input type="text" name="name" id="name" />
</div>
</div>
<div class="input">
<div class="inputtext">Courriel: </div>
<div class="inputcontent">
<input type="text" name="email" id="email" />
</div>
</div>
<div class="buttons"> <span id="error" style="display:none; color:#F00">Some Error!Please Fill form Properly </span> <span id="success" style="display:none; color:#0C0">All the records are submitted!</span>
<input class="greybutton" type="submit" value="Inscrivez-moi" />
</div>
</form>
然后我让我的 Ajax 监听提交按钮 clic:
<script>
$(document).ready(function(){
$('#myForm').on('submit',function(e) {
$.ajax({
data:$(this).serialize(),
type:'POST',
success:function(data){
console.log(data);
$("#success").show().fadeOut(5000); //=== Show Success Message==
},
error:function(data){
$("#error").show().fadeOut(5000); //===Show Error Message====
}
});
e.preventDefault(); //=== To Avoid Page Refresh and Fire the Event "Click"===
});
});
</script>
最后我得到了典型的邮件 php 代码:
<?php $name = $_POST['name'];
$email = $_POST['email'];
$message = "Veuillez m'ajouter à votre newsletter";
$formcontent="From: $name \n Message: $message";
$recipient = "myMail@MyDomain.com";
$subject = "Newsletter";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
?>
由于某种原因,它似乎永远不会到达 php,因为没有发送邮件或成功/错误消息。我反复检查了所有传递的参数,一切看起来都井井有条。
感谢您抽出宝贵时间分享您的知识!
【问题讨论】:
-
您的 .ajax() 调用缺少关键的 URL 参数。
-
正要和j08691说同样的话
-
您是否真的在您的服务器上运行有效的邮件服务器?使用适当的域等?如果不是这样,您的电子邮件将在一个短码头上走很长一段路。
-
您的 ajax 调用未引用您的 PHP 表单处理器。它应该包含一个要发布的网址。此外,您的 PHP 可能应该返回一个 JSON 响应。在目前的形式下,我认为即使 PHP 出现错误,它也会一直触发成功回调。
-
@Jared 是的,我在有效的网络/邮件服务器上运行一切。