【问题标题】:Failure to send an email in a contact form using Ajax未能使用 Ajax 在联系表单中发送电子邮件
【发布时间】:2013-05-01 14:59:07
【问题描述】:

我非常接近完成这个小项目,我需要做的就是让我的联系表发送电子邮件。容易吧?没有。哈哈

我在提交消息后关闭了联系表单,但没有发送电子邮件,想知道是否有人可以帮助我解决这个问题?我的代码如下:

http://madaxedesign.co.uk/dev/contact.php http://madaxedesign.co.uk/dev/

jquery: var doSubmit = 函数(事件){ var postData = jQuery('#submit_message').serialize();

      jQuery.ajax({
        type: "POST",
        url: '/dev/contact.php',
        data: postData
      }).done(function( html ) {
        alert(html);
      });
      event.preventDefault();
    };

        $(function () {
        $('#submit_message').submit(doSubmit);
    });

PHP:

        <?php
        $your_email = "maxlynn@madaxedesign.co.uk";
        $subject = "Email From Madaxe";
        $empty_fields_message = "<p>Please go back and complete all the fields in the form.</p>";
        $thankyou_message = "<p>Thank you. Your message has been sent. We Will reply as soon as possible.</p>";

        $name = stripslashes($_POST['txtName']);
        $email = stripslashes($_POST['txtEmail']);
        $message = stripslashes($_POST['txtMessage']);

        if (!isset($_POST['txtName'])) {

        ?>

        <form id="submit_message" class="hide_900">
            <div id="NameEmail"> 
                <div>
                    <label for="txtName">Name*</label> 
                    <input type="text" title="Enter your name" name="txtName" />
                </div> 
                <div>
                    <label for="txtEmail">Email*</label> 
                    <input  type="text" title="Enter your email address" name="txtEmail" />
                </div> 
            </div>
            <div id="MessageSubmit">
                <div> 
                    <textarea maxlength="1200" title="Enter your message" name="txtMessage"></textarea> 
                    <label for="txtMessage">Message</label>
                </div>
                <div class="submit"> 
                    <input type="submit" value="Submit" /></label>
                </div>
            </div> 
        </form> 
        <?php

        }

        elseif (empty($name) || empty($email) || empty($message)) {

        echo $empty_fields_message;

        }

        else {

            $referer = $_SERVER['HTTP_REFERER'];
            $this_url = "http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
        if ($referer != $this_url) {
        echo "You do not have permission to use this script from another URL, nice hacking attempt ;p.";
        exit;
            }

        mail($your_email, $subject, $message, "From: $name <$email>");

        echo $thankyou_message;

            }

        ?>

感谢您的帮助

【问题讨论】:

    标签: php jquery html css ajax


    【解决方案1】:

    您应该调试您的代码以查看是否有任何错误或错误,然后将错误包含在您的问题中以获得更好的帮助。但无论如何,快速浏览一下,您的 jQuery 中缺少一个分号:

           jQuery.ajax({
               url: '/contact.php',
               data: postData
           }).done(function (html) {
               alert(html);
           });
           event.preventDefault();
       }; // <-- HERE
    

    而且你的 HTML 格式不正确:

    <div class="submit"> 
          <input type="submit" value="Submit" /></label> <!-- HERE the `label` -->
    </div>
    

    检查这两个并报告。恐怕它不能解决你的问题,但值得一试。

    更新:

    将此添加到您的 jQuery 中:

    jQuery.ajax({
          type: "POST", // THIS
          url: '/contact.php',
          data: postData
          ...
    

    【讨论】:

    • 感谢 Sam,感谢您指出这一点,我已经进行了这些更改,但仍然遇到同样的问题。感谢您的帮助,如果您能通过仔细查看对我提供更多帮助,我将非常感激。
    • @MaximusRobertKenwayLynn,我已经更新了我的答案。检查并报告。
    • 感谢您抽出宝贵时间对此进行深入研究。我已将 Jquery 更新为您所说的内容,恐怕并没有什么不同。我一直在想我可能只是使用 Jquery 制作一个联系表格并删除 php 功能。不知道这是否可能,但认为它会解决我的问题。但是,如果有人能想到它可能无法发送的任何其他原因,我更愿意使用我已经拥有的代码?再次感谢
    • @MaximusRobertKenwayLynn,我测试了代码,它对我有用。实际上没有电子邮件,但它确实打印了感谢消息。
    • 真的吗?啊,我想知道为什么它不适合我。我已经用你的代码更新了开发环境。我有什么遗漏吗?madaxedesign.co.uk/dev
    【解决方案2】:

    使用了新的 PHP 并取出了我自己的 Jquery,现在必须想办法在我的弹出窗口中重定向感谢消息。 谢谢你的帮助山姆

    【讨论】:

    • 设法将谢谢重定向到一个 html 文件,但需要这样做,所以 onclick 文件会在弹出窗口中弹出。认为我只是使用与其他人相同的 Jquery
    猜你喜欢
    • 2023-03-28
    • 2019-10-03
    • 1970-01-01
    • 2012-04-24
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多