我有一个jQuery变量,它包含表单中的HTML和值。我想通过电子邮件使用带有@mail
的单独php文件发送它。
我试图在表单提交时使用jQuery $.ajax
函数发送此变量,但它不会将变量发送到php文件,因此不会发送电子邮件。
这是我的代码
jQuery:
$('form').submit(function(){
var foo = '<p>Some message</p>';
$.ajax({
url: '/send.php',
type: 'post',
data: {foo : foo},
success: function() {
alert('email sent!');
}
});
return false;
});
send.php:
<?php
$email_to = "XXX";
$email_from = "YYY";
$email_message = $_POST["foo"];
$email_subject = "[Email subject]";
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
我尝试了echo
send.php中的foo变量并删除了jQuery中的return false;
但是变量似乎没有传递给文件,也没有显示任何内容。
我做错了什么?
答案 0 :(得分:4)
你的代码没问题!我们假设您的PHP Web服务器正在运行,因此唯一可能的错误是:
url: '/send.php'
您确定 send.php 位于您网域的根目录中吗?喜欢
http://localhost/send.php
第二种可能性是你有一个以前的javascript致命错误,所以你的ajax行永远不会被readed ......
如何调试?
1 - 发布表单时页面是否刷新?如果是,那么之前的错误会阻止返回false; 被重新加载
2 - 您可以在大多数浏览器中按F12打开开发人员工具,在这种情况下,网络面板就是您所需要的:只需在打开此面板的情况下尝试您的代码,看看那里发生了什么...... 404错误代码意味着& #34;我找不到send.php!&#34;。
此FIDDLE获得404,因为http://fiddle.jshell.net/send.php不存在。
答案 1 :(得分:0)
尝试这适合你。
<html>
<body>
<form method="post" class="mailform" onsubmit="return false;">
<input type="submit" value="submit"/>
</form>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).on('submit','form',function()
{
var foo = '<p>Some message</p>';
$.ajax({
url: 'send.php',
type: 'post',
data: {'foo' : foo},
success: function() {
alert('email sent!');
}
});
return false;
});
</script>
</body>
</html>