[英]Ajax form contact (jquery)
i have a problem with an ajax contact form.我有一个 ajax 联系表单的问题。 I have an xmlhttprequest error, but i don't know why.
我有一个 xmlhttprequest 错误,但我不知道为什么。 Here is my code :
这是我的代码:
<?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;
}
}
?>
And this my js script :这是我的 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;
});
My mail isn't send, and i've no callback, do you know why ?我的邮件没有发送,我也没有回电,你知道为什么吗? Cordialy
亲切
There are several errors.有几个错误。
The data
should be a valid object with key and value pair, yours is not: data
应该是具有键值对的有效对象,您的不是:
data: {data:data},
//--key-^^^-^^^^----value
and this :和这个 :
var data = [];
should be an object instead of an array:应该是一个对象而不是一个数组:
var data = {};
$(this).serialize();
is not been assigned to any variable.未分配给任何变量。
I guess the ajax should have to be written like this:我想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;
});
If you create data object you should use it without brackets in ajax.如果你创建数据对象,你应该在 ajax 中使用它而不使用括号。
data: data
And if you use form, you should prevent default form submit如果您使用表单,则应防止默认表单提交
form.submit(function(e){
e.preventdefault();
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.