这是我第一次创建一个结合了AJAX,JavaScript,PHP和HTML的网站。基本上,当你点击里面的表格“联系我”时,我会弹出一个模态。我选择使用AJAX的原因是因为我不希望页面刷新或删除模态。我只是想让它在模态中说出简单的东西。
我的问题是,一旦我点击提交,我就没有收到来自表格的电子邮件,当我跟踪从我的服务器发送到我的地址的电子邮件时,他们甚至都没有显示。这不是我第一次构建Web表单或使用PHP / HTML,所以我确信这个问题必须与AJAX有关。
所以,这就是我所拥有的,我似乎无法弄清楚为什么它不起作用......
PHP:
<?php
$email_to="conrad.h.appel.iv@gmail.com";
$email_subject="Form Submission";
$name=$_POST['name'];
$email=$_POST['email'];
$message=$_POST['message'];
function clean_string($string)
{
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "E-Mail Address: ".clean_string($email)."\n";
$email_message .= "Message: ".clean_string($message);
$headers='From: '.$email."\r\n".'Reply-To: '.$email."\r\n".'X-Mailer: PHP/'.phpversion();
@mail($email_to,$email_subject,$email_message,$headers);
die();
?>
的Javascript / AJAX:
function submitForm() {
var request;
var name = $('#name').val();
var email = $('#email').val();
var message = $('#message').val();
console.log(name);
console.log(email);
console.log(message);
var the_data = "name="+name+"&email="+email+"&message="+message;
if(window.XMLHttpRequest)
{
request = new XMLHttpRequest();
} else {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
/* My attempt to try some jQuery.... Didn't work either
$.ajax({
type: "POST",
url: "formsubmit.php",
data: { name: $('#name'), email: $('#email'), message: ('#message') }
})*/
request.open("POST","formsubmit.php", true);
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.send(the_data);
$('#contactform').fadeOut();
$('#contactsuccess').fadeIn();
}
也是提交按钮,以防这是一个问题...
<button type="submit" class="btn btn-primary" onClick="submitForm()"><i class="icon-ok icon-white"></i> Submit!</button>
编辑:另外,我在使用相同的代码时遇到了问题,因为它刷新了页面,这是我不希望它做的事情。因此,我看不到我的Javascript控制台或任何东西。我假设AJAX会删除刷新,但它没有。我该如何解决这个问题?
答案 0 :(得分:2)
当您使用jQuery获取输入值时,请使用$.ajax()
而不是XMLHttpRequest
。您的第一种方法(现已注释)无效,因为您使用的是对象而不是值($('#name')
vs $('#name').val()
)。
页面将重新加载,因为没有返回值。使用
<button type="submit" class="btn btn-primary" onClick="return submitForm();"><i class="icon-ok icon-white"></i> Submit!</button>
并在功能结束时添加return false;
。
要查看您的PHP脚本是否存在问题,我建议如下:
error_reporting(E_ALL);
@
在你的JS函数中:
$.ajax({
[...]
success: function(msg) {
alert(msg);
}
});
答案 1 :(得分:0)
我建议您将最后两行更改为
mail(blah) or die('could not send mail');
或者如果您不想这样,那么您应该使用exit()函数。
但我相当肯定你不能只写die()。你要么做
mail(blah) or die('could not send email');
或者你需要使用exit()函数。