这是我的代码和问题是,当我发送电子邮件呼叫表单ID时,当我删除表单ID然后电子邮件发送时,电子邮件不发送
Htmlcode和html之后是js代码 这个我的代码和问题是,当我发送电子邮件呼叫表单ID时,当我删除表单ID然后电子邮件发送时,电子邮件不发送
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php">
<div class="col-sm-5 col-sm-offset-1">
<div class="form-group">
<label>Name *</label>
<input type="text" name="name" class="form-control" required="required">
</div>
<div class="form-group">
<label>Email *</label>
<input type="email" name="email" class="form-control" required="required">
</div>
<div class="form-group">
<label>Phone</label>
<input type="number" class="form-control">
</div>
<div class="form-group">
<label>Company Name</label>
<input type="text" class="form-control">
</div>
</div>
<div class="col-sm-5">
<div class="form-group">
<label>Subject *</label>
<input type="text" name="subject" class="form-control" required="required">
</div>
<div class="form-group">
<label>Message *</label>
<textarea name="message" id="message" required="required" class="form-control" rows="8"></textarea>
</div>
<div class="form-group">
<button type="submit" name="submit" class="btn btn-primary btn-lg" required="required">Submit Message</button>
</div>
</div>
</form>
-
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> Email is sending...</p>').fadeIn());
}
}).done(function(data) {
form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut();
});
});
php code
<?php
header('Content-type: application/json');
$status = array(
'type'=>'success',
'message'=>'Thank you for contact us. As early as possible we will contact you '
);
$name = @trim(stripslashes($_POST['name']));
$email = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));
$email_from = $email;
$email_to = 'email@email.com';//replace with your email
$body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;
$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
echo json_encode($status);
die;
答案 0 :(得分:1)
这是你的ajax调用应该是什么样的
$('#main-contact-form').on('submit', function(event) {
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url : $(this).attr('action'),
data : $(this).serialize(),
dataType : 'json',
type : 'POST',
beforeSend : function() {
form.prepend(form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn());
}
}).done(function(data) {
form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut();
});
});
答案 1 :(得分:0)
确保你的ajax响应是
form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut();
实际上是一个对象变量
因为如果不是因为data.message
data = JSON.parse(data);
form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut();
还请检查您的网络状态,检查该ajax请求的响应 使用开发工具F12
所以你的回复是json,但仍然需要在你的javascript中解析 解决方案:解析你的ajax响应,使其成为json对象
[{ "membership 1" :
{"name" : "name1", "price": 10},
"membership 2" :
{"name" : "name2", "price": 10}
}]
答案 2 :(得分:0)
问题是,您没有使用ajax-call发送表单数据。 就像adeneo写的那样,你只需要为你的代码添加一行。
data : $(this).serialize(),
设置数据类型是相关的,因为目标需要知道数据的发送格式。
尝试使用Jquery-POST功能。它在代码中看起来好多了。