通过邮件发送jQuery变量

时间:2014-06-30 13:15:32

标签: javascript php jquery ajax email

我有一个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;但是变量似乎没有传递给文件,也没有显示任何内容。

我做错了什么?

2 个答案:

答案 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>