【发布时间】:2011-02-19 15:55:16
【问题描述】:
好吧,长话短说:
JavaScript:
jQuery("submit").click(function() {
var address = jQuery("#mail").val();
var title = jQuery("#title").val();
var name = jQuery("#name").val();
var mail = jQuery("#email").val();
var message = jQuery("#msg").val();
alert(address);
alert(title);
alert(name);
alert(mail);
alert(message);
jQuery.post("sendmail.php",
{address: address, title: title, name: name, mail: mail , message: message},
function(data){
jQuery("#email").html("<div id='sent'><p>Thank you for the message.</p><p>We will reply as soon as possible.</p></div>");
alert('sent');
});
return false;
});
工作顺利(在警报中显示每个值),但从不显示 div “已发送”。并且从不发送实际邮件。
sendmail.php 在正确的位置,它的代码是:
<?php
// getting variables from form
$emailTo = trim($_REQUEST['address']);
$subject = trim($_REQUEST['title']);;
$name = trim($_REQUEST['name']);
$emailFrom = trim($_REQUEST['mail']);
$message = $_REQUEST['message'];
// prepare email body text
$Body = "You have a message from: ";
$Body .= $name;
$Body .= "\n";
$Body .= "\n";
$Body .= $message;
// send prepared message
$sent = mail($emailTo, $subject, $Body);
//callback for jQuery AJAX
if ($sent){
echo 'sent';
}
else{}
print_r($_REQUEST); die();
?>
更新了 jQuery 代码,还是不行:
jQuery("#contact-form-send").click(function() {
var address = jQuery("#contact-form-mail-address").val();
var title = jQuery("#contact-form-mail-title").val();
var name = jQuery("#contact-form-name").val();
var mail = jQuery("#contact-form-email").val();
var message = jQuery("#contact-form-message").val();
var data = "&address=" + address + "&title=" + title + "&name=" + name + "&mail=" + mail + "&message=" + message;
jQuery.ajax({
type: "POST",
url: "sendmail.php",
data: data,
success: function(){
jQuery(".email-us").html("<div id='email-sent'><p>Thank you for the message.</p><p>We will reply as soon as possible.</p></div>");
}
});
return false;
});
【问题讨论】:
-
@kjy112,当然,我正在努力解决这个问题 :) 我已经完全更新了第一篇文章,也许你能找到问题所在?但首先我将使用 .ajax 检查您的方法。
-
你已经关闭了你的 else 语句,没有在里面放任何东西......也许是
print_r($_REQUEST);? -
@kjy112,没有任何改变,顺便说一句,我无法访问 sendmail.php 输出,我只是单击“提交”,然后出现了 div。而已。没有重定向到 sendmail.php。
-
听起来很有效。它在做 ajax,它不会重定向而是根据请求提交。因此,如果您的 sendmail.php 正确,就好像您从不离开页面但仍发送邮件。基本上你想要做的是将回调信息附加到
jQuery(".email-us".html();我将再次更新我的答案以显示你 -
@kjy112 它可能无法正常工作,因为我没有收到任何邮件... ;/ 但我是在本地主机上做的,我会尝试在其他地方检查服务器。无论如何,我喜欢将回调信息附加到正确的行,但我不确定如何。
标签: php javascript jquery post sendmail