我有这个AJAX:
function sendMail () {
$.post('php/sendMail.php', function(result){
alert(result);
})
}
$('#submitContact').click(function(){
sendMail();
})
和这个PHP:
<?php
$trimmed = array_map('trim', $_POST);
$message = $trimmed['message'];
$email = $trimmed['email'];
$name = $trimmed['name'];
if (empty($message)) {
$message = FALSE;
}
if (empty($email)) {
$message = FALSE;
}
if (empty($name)) {
$message = FALSE;
}
if ($message && $email && $name){
$body = "From: $name.\n \n $message";
mail(/*some email*/, 'Website Contact Form Submission', $body, "From: $email");
echo ('success');
}
echo($message.' '.$email.' '.$name);
?>
定义了所有定义的html元素。当我运行它时,所有返回的是一个空白警告框(意味着PHP脚本没有打印出成功)。知道为什么不发邮件吗?
答案 0 :(得分:4)
您似乎没有使用POST
发送任何数据。
如果您要提交表单,请尝试以下操作:
$.post('php/sendMail.php',$('form').serialize(), function(result){
alert(result);
})
编辑:正如Tomalak在评论中正确指出的那样,您需要指定要序列化的表单。我通常会给表单id
并使用: - $('#myform').serialize()
答案 1 :(得分:1)
您没有向该网址发送任何数据。
答案 2 :(得分:1)
您看到空警报框的原因是$email
和$name
为空,因为您没有传递任何$_POST
变量。
当你回应它时,$message = FALSE
是空白的
尝试更改此行
echo($message.' '.$email.' '.$name);
要
var_dump($message.' '.$email.' '.$name);
你会看到$message.' '.$email.' '.$name
的价值。
答案 3 :(得分:0)
知道它为什么不发送邮件?
简单地说,你没有要求。
$.post
的语法是:
jQuery.post(url,[data,] [success(data,textStatus,jqXHR),] [dataType])
jQuery的工作方式,你可能跳过data
参数并仍提供以下参数,但在这种情况下,你只是没有传递任何数据让你的PHP脚本工作用。
假设#submitContact
是您要提交的表单中的按钮,您应该序列化该表单的内容并将其作为POST
数据发送:
function sendMail($form) {
$.post('php/sendMail.php', $form.serialize(), function(result) {
alert(result);
});
}
var $btn = $('#submitContact');
var $frm = $btn.parents('form');
$btn.click(function() {
sendMail($frm);
});
The documentation is your friend. Use it.
(注意:我的一些变量开头的$
是故意的; jQuery对象的名称以$
开头是个人选择我的代码。)