我想用PHP发送邮件,但数据是在Jquery中,所以我使用Ajax。
邮件已发送,但我有警报("失败"),我不知道为什么^^ jqXHR.responseText为空,textStatus ="错误" ...
我得到了我的表格的所有数据:
// Récupération de TOUS les élements DES formulaires
var lesChamps = $(".frm_etape input[type='text'], .frm_etape input[checked], .frm_etape input[type='checkbox'], .frm_etape select, .frm_etape textarea");
// Message qui contiendra les données que l'on passera au script PHP
var message = "";
// On empêche les submit de s'afficher dans le mail
$(lesChamps).attr("type", "submit").replaceWith("\n\n");
// Parcours des champs des formulaires
$(lesChamps).each(function(){
message += $(this).attr("name") + " : " + $(this).val() + "\n\n";
});
/* Requête Ajax */
$.ajax({
method: "POST",
url: "traitement.php",
data: { message }
})
/* Si succès */
.done(function() {
$(".succes").animate().css("display", "block");
alert("Ok");
// On attends 3,5 secondes puis on rafraichi la page
//setTimeout(function(){location.reload();}, 3500);
})
/* Si échec */
.fail(function(jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
alert("FAIL");
});
这是traitement.php:
mail("r.v@a.com", 'Nouveau devis', $_POST['message']);
邮件已正确发送,但始终有警报(" FAIL")!而responseText是一个空字符串
编辑:在失败()中我写道:
console.log(errorThrown.stack);
这就是结果:{readyState:0,getResponseHeader:function,getAllResponseHeaders:function,setRequestHeader:function,overrideMimeType:function,...}
我找到了解决方案!只需添加一个e.preventDefault();在我的代码之前!