【发布时间】:2011-05-14 17:05:28
【问题描述】:
我已经使用 jQuery 和 PHP 表单创建了我的第一个 ajax 联系人,但它似乎不起作用。
我的 jQuery 代码:
var dataString = 'address=' + address + '&title=' + title + '&name=' + name + '&mail=' + mail + '&message=' + message;
jQuery.ajax({
type: "POST",
url: "sendmail.php",
data: dataString,
success: function () {
alert(dataString);
jQuery('#ok').html("<h2>Contact Form Submitted!</h2>")
}
});
return false;
评论 - 我正在使用警报来显示数据字符串,它准确地显示了我的字符串,此外,此脚本始终成功并显示“已提交联系表单”。
现在是 sendmail.php 部分(我相信这里有问题):
// getting variables from form
$emailTo = trim($_POST['address']);
$subject = trim($_POST['title']);;
$name = trim($_POST['name']);
$emailFrom = trim($_POST['mail']);
$message = $_POST['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 '';
}
else{}
有什么想法吗?我知道我不会删减我的 $message,我会的,但我只会发送一个单词的测试邮件。
所有变量都来自 HTML 表单,并以这种方式在 jQuery 脚本中注册 - var address = $("#cmail-address").val(); .无论如何,这与我的问题无关,因为我得到了很好的回调。
顺便说一句,我的服务器允许发送消息和其他脚本工作正常。
【问题讨论】:
-
第一行的变量来自哪里?
-
从 HTML 表单中,正如我上面提到的,我会收到类似 ?address=something&?title=something&(...) 这样的字符串的警报,所以我认为这不是重点?
-
这不是问题,但使用像 { address: address, title: title } 这样的对象文字列出数据可能更清楚。
-
你在没有启用 AJAX 的情况下测试过它吗?是这样的吗?
-
您需要准确解释“似乎不起作用”的含义。您的电子邮件不会发送?顺便说一句,您可以使用
$('#form-id').serialize();将表单的所有值转换为字符串,而不是手动构建dataString。