【问题标题】:Not getting post values没有获得帖子值
【发布时间】:2017-05-31 03:16:43
【问题描述】:

我正在使用此脚本从联系表单发送电子邮件。我收到电子邮件但信息是空的,我尝试“回显”帖子值但它不会,我错过了什么? 我认为这可能是我的 HTML 表单有问题,但我看不到它。

sendemail.php

$status = array(
    'type'=>'success',
    'message'=>'Thank you for contact us. As early as possible  we will contact you '
);

$nome = addslashes($_POST['name']);
$email = addslashes($_POST['email']);
$tel = addslashes($_POST['telephone']);
$subject = addslashes($_POST['subject']);
$msg = addslashes($_POST['message']);

$para = "*******@gmail.com";
$body = "Nome: " .$nome. "\nE-mail: " .$email. "\nTelefone: " .$tel. "\nMensagem: " .$msg;

$header = "From: contact@*******.com.br"."\r\n"."Reply-To: ".$email."\r\n"."X-Mailer: PHP/".phpversion();

$success = mail($para, $subject, $body, $header);

echo json_encode($status);

表单页面html

<section id="contact-page">
    <div class="container">
        <div class="center">        
            <h2>Deixe sua mensagem</h2>
        </div> 
        <div class="row contact-wrap"> 
            <div class="status alert alert-success" style="display: none"></div>
                <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>Nome *</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>Telefone</label>
                            <input type="phone" name="telephone"class="form-control">
                        </div>                       
                    </div>
                    <div class="col-sm-5">
                        <div class="form-group">
                            <label>Assunto *</label>
                            <input type="text" name="subject" class="form-control" required="required">
                        </div>
                        <div class="form-group">
                            <label>Mensagem *</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">Enviar</button>
                        </div>
                    </div>
                </form> 
        </div>
    </div>
</section>

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> Email is sending...</p>').fadeIn() );
        }
    }).done(function(data){
        form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut();
    });
});

【问题讨论】:

  • 使用浏览器的 Web 控制台查看它是否正在发送帖子值
  • 您的代码实际上正在运行,点击提交后它是否会重定向到 sendemail 页面?
  • @TimMorton 我不认为它正在发送邮资,但我看不到任何解决方案
  • @ryo7689 这并不奇怪。
  • 提交时页面是否刷新?是否有 javascript 观察者在观看提交按钮?我问是因为脚本是用 json 响应的,所以它可能是通过 ajax 调用的。

标签: php html forms post


【解决方案1】:

默认情况下,ajax 发送via the GET method。此 JavaScript 代码未指定 POST 方法;因此虽然调用了 PHP 脚本,但它从未收到任何数据。

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();
    });
});

更新后的脚本将如下所示(参见jQuery AJAX submit form):

var form = $('#main-contact-form');
form.submit(function(event){
    event.preventDefault();
    var form_status = $('<div class="form_status"></div>');
    $.ajax({
        url: $(this).attr('action'),
        type: "POST",    
        data: form.serialize(), // serializes the form's elements.
        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();
    });
});

【讨论】:

  • 耶啊啊啊!!成功了,非常感谢我的朋友!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多