簡體   English   中英

Ajax 表單聯系人 (jquery)

[英]Ajax form contact (jquery)

我有一個 ajax 聯系表單的問題。 我有一個 xmlhttprequest 錯誤,但我不知道為什么。 這是我的代碼:

<?php
if(isset($_POST)){
if(!empty($_POST['nom']) && !empty($_POST['email']) && !empty($_POST['date']) && !empty($_POST['message']))
{
    $message = '
            Quelqu\'un vous a contacter pour une prestation : \n:
            Nom du client : '.$nom.'\n
            Email du client : '.$email.'\n
            Date de la préstation : '.$date.'\n
            Message : \n 
            '.$message;
    if(mail('my.email@gmail.com', 'Demande de préstation MonSite', $message))
    {
        $msg = "Votre message à bien été envoyé. Nous vous répondrons dès que possible";
    }
    else
    {
        $msg = "Impossible d'envoyer le message, merci de nous contacter via <em>admin@site.fr</em>";
    }
    echo $msg;
}
}
?>

這是我的 js 腳本:

var form = $("#contact-form");
form.submit(function(){
    $(this).serialize();
    var data = [];
    data.email = $(this).find('input[name="email"]').val();
    data.nom = $(this).find('input[name="nom"]').val();
    data.date = $(this).find('input[name="date"]').val();
    data.message = $(this).find('textarea[name="message"]').val();
    $.ajax({
            url: 'contact.php',
            type: 'post',
            data: {data},
            success: function (msg) {
                form.append('<div class="form-status">' + msg + '</div>');
            },
                                error:function(jqXHR)
                    {
                        console.log(jqXHR);
                    }
        });
    return false;
});

我的郵件沒有發送,我也沒有回電,你知道為什么嗎? 親切

有幾個錯誤。

data應該是具有鍵值對的有效對象,您的不是:

data: {data:data}, 
//--key-^^^-^^^^----value

和這個 :

var data = [];

應該是一個對象而不是一個數組:

var data = {};

$(this).serialize(); 未分配給任何變量。


我想ajax應該這樣寫:

var form = $("#contact-form");
form.submit(function(){
    var data = {};
    data.email = $(this).find('input[name="email"]').val();
    data.nom = $(this).find('input[name="nom"]').val();
    data.date = $(this).find('input[name="date"]').val();
    data.message = $(this).find('textarea[name="message"]').val();
    $.ajax({
        url: 'contact.php',
        type: 'post',
        data: data, //because it is an object as you can see above | or just $(this).serialize(),
        success: function (msg) {
            form.append('<div class="form-status">' + msg + '</div>');
        },
        error:function(jqXHR){
              console.log(jqXHR);
        }
    });
    return false;
});

如果你創建數據對象,你應該在 ajax 中使用它而不使用括號。

data: data

如果您使用表單,則應防止默認表單提交

form.submit(function(e){
   e.preventdefault();
     ...
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM