2015-09-04 98 views
-1

我有一个ajax联系表单的问题。我有一个xmlhttprequest错误,但我不知道为什么。 这里是我的代码:Ajax表单联系人(jQuery)

<?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('[email protected]', '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>[email protected]</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; 
}); 

我的邮箱是不是送的,我没有回,你知道为什么吗? Cordialy

回答

2

有几个错误。

data应与键和值的对的有效对象,你并不:

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

和此:

var data = []; 

应的对象而不是数组:

var data = {}; 

$(this).serialize();未被分配给任何变量。


我猜应该阿贾克斯必须这样写的:

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; 
}); 
0

如果你创建数据对象,你应该使用它,而在阿贾克斯括号内。

data: data 

如果您使用的形式,你应该防止默认表单提交

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