【问题标题】:Sending email through Ajax通过 Ajax 发送电子邮件
【发布时间】:2014-03-11 20:25:22
【问题描述】:

我正在为表单使用验证插件。 我只想要一个没有刷新的联系表。我想这是可能的。

这是我的 Javascript:

$().ready(function() {
// validate the comment form when it is submitted.

 $("#actualForm").validate({
focusInvalid: false,
onkeyup: true,
    rules: {
    // simple rule, converted to {required:true}
        name: "required",
        comment: "required",
        email: {
          required: true,
          email: true
        },
    },

submitHandler: function(form) {   
            var name = $('input[name="name"]').val();
            var email = $('input[name="email"]').val();
            var comment = $('input[name="comment"]').val();
            var params = {
                "name": name,
                "email": email,
                "comment": comment,
            };

            console.log(data);debugger;
            $.ajax({
            url: 'email.php',
            data: params,
            type: 'POST',
            dataType: json,
            success: function (data) {

                if (data.status) {
                    //Give success log to user
                } else {
                    //Do something
                }
            }
            });
        } 

这是我的 PHP:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$comment = $_POST['comment'];
$to = 'myemail';
$from = $email;
$subject = 'subject';
$body = "Hello Admin<br><br>
        Name: <strong>$name</strong><br>
        Email: $email<br>
        Bericht: $comment<br>
            ";
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= "From: $from";
$ok = mail($to, $subject, $body, $headers);
if($ok)
    echo '1';
else
    echo '0';
?>

我也有一个 invalidHandler,但那东西正在工作,所以我想把它放在这里没用。

但是我现在被困了几个小时,我希望有人可以帮助我解决这个问题。

【问题讨论】:

  • 您是否尝试过不使用 ajax 直接运行您的 php 脚本?
  • 它的实际作用是什么?任何输出,我看到控制台应该记录一些东西?
  • @FredericNault 不,我还没有尝试过。 Aurel300 它刷新了我的页面。它不发送任何电子邮件。该日志输出我的数据。
  • 旁注:您错过了以 HTML $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";@Drogon 发送电子邮件的重要代码行
  • @FredericNault,我已经运行了没有 ajax 的电子邮件。它仅发送一封电子邮件: 姓名:
    电子邮件:
    Bericht:

标签: javascript php jquery ajax email


【解决方案1】:

您的代码在 ajax 函数内部有一点错误

替换:

dataType: json,

作者:

dataType: 'json',

没有 '',json 被视为变量名,在您的情况下,您希望将 'json' 作为值传递。

【讨论】:

  • 我已经改过了。但是一个奇迹刚刚发生:我没有更改 email.php 并且它不再发送任何电子邮件......这怎么可能
  • 嗯,我这边正在使用 jsfiddle,你有 firebug 或任何工具来查看所有 ajax 请求/答案吗?
  • 你确定这个值吗:url: 'email.php'
  • 我的 ajax 现在做得很好。因为他达到了我的成功功能,所以我发出了警报,他达到了。但是如果我去 email.php 它返回 0。它首先给了我 1。是的,我确定 URL
  • 之前我们直接测试 php,你说它工作正常。所以我想我们必须再次测试它。如果你替换你的 echo '0';通过 var_dump($to, $subject, $body, $headers),我们将看到哪个变量破坏了脚本
【解决方案2】:

我有使用 var_dump 调试的倾向。

什么是 var_dump($_POST);给你?

您的浏览器是否收到 500 网络响应?

输入 console.log(data);在您的成功功能中也是如此。这将为您提供有关如何解决问题的提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2012-04-27
    • 2016-07-04
    • 2018-09-19
    • 2021-03-23
    相关资源
    最近更新 更多