我使用了引导表单,但无法从表单发送数据,任何人都可以帮助我解决这个问题,我现在尝试了很多,我receiving only blank mail
喜欢名字:
电子邮件:
主题:
消息:
使用托管电子邮件 ID xxxx@hostmonster.com
如何将接收从"到发件人 ID"更改为我的代码
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="http://smalldesigncompany.com/client/form-sending/sendemail.php" role="form">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Name" required>
</div>
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email" required>
</div>
<div class="form-group">
<input type="text" name="subject" class="form-control" placeholder="Subject" required>
</div>
<div class="form-group">
<textarea name="message" class="form-control" rows="8" placeholder="Message" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Send Message</button>
</form>
我的jquery:
var form = $('#main-contact-form').serialize();
form.submit(function (event) {
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
type: 'POST',
dataType: "json",
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:
<?php
header('Content-type: ');
$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 = 'sales.mtc@outlook.com';
$body = 'Name: ' . $name . "nn" . 'Email: ' . $email . "nn" . 'Subject: ' . $subject . "nn" . 'Message: ' . $message;
$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
echo json_encode($status);
die;
?>
包含要发送的data
,因为JQuery
&&PHP
不知道您发布的值。看看 Jquery Docs on Data (LINK)
修改后的代码:
var form = $('#main-contact-form').serialize();
form.submit(function (event) {
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
type: 'POST',
dataType: "json",
data: {
name: $('input[name="name"]').val(),
email: $('input[name="email"]').val(),
subject: $('input[name="subject"]').val(),
message: $('textarea[name="message"]').val(),
},
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();
});
});
你的 Js 会是这样的,
$('#main-contact-form').on('submit', function (event) {
form = $(this);
var formData = form.serialize();
event.preventDefault();
$.ajax({
url: form.attr('action'),
type: 'POST',
data: formData,
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();
});
});
它将完美地工作。
问题出在你的javascript上 - 你的jQuery.ajax实际上不包含任何数据!
根据jQuery文档(http://api.jquery.com/jquery.ajax/):
数据 类型:普通对象或字符串或数组 要发送到服务器的数据。如果还不是字符串,则会将其转换为查询字符串。它被附加到 GET 请求的 url 中。请参阅进程数据选项以防止此自动处理。对象必须是键/值对。如果 value 是一个数组,jQuery 会根据传统设置的值序列化具有相同键的多个值(如下所述)。
您可以在输入上使用 jquery.serialize (https://api.jquery.com/serialize/) 来创建要传递的所需数据字符串。
尝试添加标头。可能是您的"\"产生问题。
$header = "From: noreply@example.comrn";
$header.= "MIME-Version: 1.0rn";
$header.= "Content-Type: text/html; charset=ISO-8859-1rn";
$header.= "X-Priority: 1rn";
$success = @mail($email_to, $subject, $body, $header);