javascript - 使用ajax的表单不发送电子邮件

标签 javascript php jquery ajax email

我正在尝试使用 ajax 提交表单,但它不起作用。问题是它实际上告诉我它发送了电子邮件,但是当我检查电子邮件时我什么也没得到。当我调用 Ajax 方法时,它似乎停止工作。这是代码:

HTML:

<form method="POST" id="form_contact" class="col_50">
    <input type="text" id="prenom_contact" name="prenom_contact" placeholder="Prénom" />
    <input type="text" id="nom_contact" name="nom_contact" placeholder="Nom" />
    <input type="text" id="email_contact" name="email_contact" placeholder="Courriel" />
    <textarea id="message_contact" name="message_contact" rows="6" placeholder="Votre message..."></textarea>

    <input type="submit" id="submit_contact" name="submit_contact" value="Envoyer" />
</form>

JS:

var prenom = $("#prenom_contact").val(),
    nom = $("#nom_contact").val(),
    email = $("#email_contact").val(),
    message = $("#message_contact").val();

var error_count = 0;

//THERE IS ADDITIONNAL CODE HERE WHO'S JUST CHECHKING IF THE VAR AREN'T EMPTY, I'M JUST NOT SHOWING IT BECAUSE I KNOW THAT IT IS WORKING

//IF THE FORM HAS NO ERROR
if(error_count === 0)
{
    $.ajax({
        type: "POST",
        url: "http://davidstpierre.ca/new/form_contact.php",
            data: "prenom=" + prenom + "&nom=" + nom + "&email=" + email + "&message=" + message,               
        error: function() {
            alert("Une erreur est survenue. Veuillez actualiser la page de nouveau et réessayer.");
        },
        success: function() {
            //RESET THE FORM
            $('#prenom_contact').val('');
            $('#nom_contact').val('');
            $('#email_contact').val('');
            $('#message_contact').val('');

            alert("Good job!");
        }
    });
}

PHP:

<?php
if($_POST)
{   
    echo "<p id='contact_success'>Succès!</p>";

    $prenom = $_POST['prenom_contact'];
    $nom = $_POST['nom_contact'];
    $email = $_POST['email_contact'];   
    $message = $_POST['message_contact'];       

    $destinataire = "saintpierre.david@gmail.com";
    $titre_courriel = "Un nouveau message de la part de " .$prenom." ".$nom. " sur votre portfolio.";

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= 'From: '.$prenom.' '. $nom .' <'.$email.'>' . "\r\n";

    $codehtml=
    "<html><body>" .
        "<p><strong>Nom:</strong> ".htmlspecialchars($nom)."</p>".
        "<p><strong>Prénom:</strong> ".htmlspecialchars($prenom)."</p>".
        "<p><strong>Adresse électronique:</strong> ".htmlspecialchars($email)."</p>".
        "<p><strong>Commentaires:</strong> ".htmlspecialchars($message)."</p><br>" .
    "</body></html>";

    if(!empty($nom) & !empty($prenom) & !empty($email) & !empty($message))
    {
        if(mail($destinataire, $titre_courriel, $codehtml, $headers))
        {
            return true;
        }
        else {
            return false;
        }
    }
    else {
        return false;
    }
}
?>

最佳答案

PHP 代码正在寻找以下参数:

  1. prenom_contact
  2. nom_contact
  3. 电子邮件联系人
  4. message_contact

但是您有以下 ajax 调用:

data: "prenom=" + prenom + "&nom=" + nom + "&email=" + email + "&message=" + message

此外,最好使用一个对象,以便 jQuery 为您编码:

data: {
    prenom_contact: prenom,
    nom_contact: nom,
    email_contact: email,
    message_contact: message
},

关于javascript - 使用ajax的表单不发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24194086/

相关文章:

javascript - $q.all 对数组中的所有 Promise 返回相同的响应

javascript - 如何按值对对象进行排序

php - csv解析, explode 避免 ""

javascript - 向下滚动时变为固定位置后,回到向上滚动时的绝对定位

javascript - requestanimationframe() 中的函数调用了太多次,如何只调用一次?

php - 在 php 上向收件人数组发送电子邮件

php - 是否可以通过知道 PHP 中的用户名和密码(仅)来破解我的数据库

jquery - 每个 child 都做同样的事情,但有时间间隔

jquery - 将新项目添加到 jquery 可排序项中,刷新不会获取该新项目

javascript - Rails 形成部分中断 Bootstrap 弹出窗口