引导表单不起作用.接收空白表格


bootstrap form not working. receiving blank form

我使用了引导表单,但无法从表单发送数据,任何人都可以帮助我解决这个问题,我现在尝试了很多,我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 . "'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; 
?>
您需要

包含要发送的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.com'r'n"; 
$header.= "MIME-Version: 1.0'r'n"; 
$header.= "Content-Type: text/html; charset=ISO-8859-1'r'n"; 
$header.= "X-Priority: 1'r'n"; 
$success = @mail($email_to, $subject, $body, $header);