Javascript AJAX联系人表单没有';我不能正常工作
我有一张表格:Javascript AJAX联系人表单没有';我不能正常工作,javascript,php,ajax,Javascript,Php,Ajax,我有一张表格: <form id="main-contact-form" name="contact-form" action="sendemail.php" method="post"> <div class="form-group"> <input type="text" name="name" class="form-control" required="required" placeholder="Name"> <
<form id="main-contact-form" name="contact-form" action="sendemail.php" method="post">
<div class="form-group">
<input type="text" name="name" class="form-control" required="required" placeholder="Name">
</div>
<div class="form-group">
<input type="email" name="email" class="form-control" required="required" placeholder="Email">
</div>
<div class="form-group">
<textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Message"></textarea>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-submit" value="Send">
</div>
</form>
sendemail.php是:
<?php
$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);
$to = "email@email.com";
$sub = "New message from site";
$message = "New message\n
Name: $name
Email: $email";
$from = "From: $name <$name> \r\n";
mail($to, $sub, $message, $from);
return;
?>
javascript是:
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Thanks for you message!</p>').delay(3000).fadeOut();
});
});
var form=$(“#主联系人表单”);
表单提交(功能(事件){
event.preventDefault();
变量形式_状态=$('');
$.ajax({
url:$(this.attr('action'),
beforeSend:function(){
form.prepend(form_status.html(“发送…”).fadeIn());
}
}).完成(功能(数据){
form_status.html(“谢谢您的消息!
”).delay(3000).fadeOut();
});
});
问题是:它向电子邮件发送消息,但没有输入字段。它们的值是空的。我尝试在没有JS的情况下这样做,它正确地发送了每个字段。改进的ajax请求:
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Sending...</p>').fadeIn() );
},
// by default method is `GET`, set `POST` explicitly
method: "POST",
// provide data that you need in a `data` property
// there can be many ways to collect your data
// `serialize` is the simplest method for this case
data: form.serialize()
}).done(function(data){
form_status.html('<p class="text-success">Thanks for you message!</p>').delay(3000).fadeOut();
});
});
var form=$(“#主联系人表单”);
表单提交(功能(事件){
event.preventDefault();
变量形式_状态=$('');
$.ajax({
url:$(this.attr('action'),
beforeSend:function(){
form.prepend(form_status.html(“发送…”).fadeIn());
},
//默认情况下,方法是'GET',显式设置'POST'
方法:“张贴”,
//在“数据”属性中提供所需的数据
//收集数据的方法有很多种
//`serialize`是这种情况下最简单的方法
数据:form.serialize()
}).完成(功能(数据){
form_status.html(“谢谢您的消息!
”).delay(3000).fadeOut();
});
});
您可以使用jQuery ajax使用另一种表单提交类型
<script>
$('#main-contact-form').submit(function(event){
event.preventDefault();
$.ajax({
type:'post',
url:'sendememail.php',
data:$(this).serialize(),
success:function(response){
if(response==1)
{
setInterval(function(){$('.review_form').html('<h5><center><div class="alert alert-success">Review Successfully Submitted......</div></center></h5>');},5);
}
else
{
setInterval(function(){$('.review_form').html('<h5><center><div class="alert alert-danger">Sorry Your Review Was Not Submitted......</div></center></h5>');},5);
}
}
});
});
</script>
$(“#主要联系方式”)。提交(功能(事件){
event.preventDefault();
$.ajax({
类型:'post',
url:'sendeMail.php',
数据:$(this).serialize(),
成功:功能(响应){
如果(响应==1)
{
setInterval(function(){$('.review_form').html('review Successfully Submitted…);},5);
}
其他的
{
setInterval(function(){$('.review_form').html('Sorry Your review Not Submitted…);},5);
}
}
});
});
指定要通过ajax
发送的方法和数据,如下所示为POST
方法:
$.ajax({
url: $(this).attr('action'),
method: "POST",
data: $(this).serialize();
});
您不使用ajax请求发送数据。那么您希望得到什么呢?还要将
method:'POST'
添加到ajax调用参数中。默认情况下,您正在发送一个GET
请求。表单操作属性的文件名中有一个输入错误。如前所述,在AJAX调用中不发送表单数据,只需在AJAX调用中添加data:form.serialize()
。