【问题标题】:AJAX Email send doesn't workAJAX 电子邮件发送不起作用
【发布时间】:2018-10-30 22:27:01
【问题描述】:

好的,所以我想在不重新加载页面的情况下提交表单,这可能是一个老话题。但是,我设法找到了解决方案,但它根本不起作用,我不知道我错过了什么。

我知道这是一个 javascript 问题,因为如果我使用简单版本,在没有任何 javascript 的情况下提交表单,我会收到电子邮件,但现在我没有。

这是我的 HTML:

<form action="confirm.php" id="support" method="post">
    <input autocomplete="off" id="name" name="name" placeholder="Numele tău" required="" type="text" />
    <input autocomplete="off" id="email" name="email" placeholder="Email-ul tău" required="" type="email" />
    <input autocomplete="off" id="phone" name="phone" placeholder="Numărul tău de telefon (opțional)" type="tel" />
    <input class="button" name="submit" type="submit" value="TRIMITE" />
    <p id="success">Thanks!</p>
</form>

这是我的 PHP:

<?php
    if(isset($_POST['submit'])){
        $to = "invest@es-sphere.ro";
        $name = $_POST['name'];
        $from = $_POST['email'];
        $phone = $_POST['phone'];

        $subject = "Sunt interesat de INVEST!";

        $message = $name . ", cu numărul de telefon " . $phone . " și email-ul " . $from . "este interesat de proiectul INVEST";

        $headers = "From:" . $from;
        mail($to,$subject,$message,$headers);
    }
?>

这是我的 javascript:

$(document).ready(function () {
  $('#support').submit(function (e) {

    e.preventDefault();
    var formData = $(this).serialize();

    $.post("confirm.php", formData).done(function() {
        console.log("Success");
        $("#success").show();
    });
  });
});

【问题讨论】:

标签: javascript php ajax email


【解决方案1】:

问题是您正在检查“提交”是否已发送。但是按钮值不会随现有代码一起发送。

改变这个

if(isset($_POST['submit'])){

if(isset($_POST['name'])){

或其他一些值,或者可能是最好的,检查所有值。

【讨论】:

  • 哇,我不敢相信这是我错过的 :)) 非常感谢!
【解决方案2】:

$(this).serialize() 不会收集用于提交表单的提交按钮的名称/值。

if(isset($_POST['submit'])){ 因此会失败。

使用其他一些测试(例如另一个字段)来查看是否正在提交表单数据。

【讨论】:

    猜你喜欢
    • 2020-08-30
    • 2021-12-31
    • 2016-02-11
    • 2012-08-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多