消息提醒无法正常工作

时间:2016-10-25 06:16:48

标签: javascript jquery

这是我的代码和问题是,当我发送电子邮件呼叫表单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;

3 个答案:

答案 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功能。它在代码中看起来好多了。