【问题标题】:PHP form post data not being received due to jQuery由于 jQuery,未收到 PHP 表单发布数据
【发布时间】:2015-11-28 00:46:49
【问题描述】:

我有一个发送电子邮件的基本表格。它正在发送电子邮件,但不传递表单中的数据。我是否缺少允许数据发布的内容?

发送电子邮件的 HTML 表单:

<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" role="form">
    <div class="row">
        <div class="col-sm-5">
            <div class="form-group">
                <input name="name" type="text" class="form-control" required="required" placeholder="Name">
            </div>
            <div class="form-group">
                 <input name="email" type="text" class="form-control" required="required" placeholder="Email address">
            </div>
            <div class="form-group">
                 <button type="submit" class="btn btn-primary btn-lg">Send Message</button>
            </div>
        </div>
        <div class="col-sm-7">
            <textarea name="message" required="required" class="form-control" rows="8" placeholder="Message"></textarea>
        </div>
    </div>
</form>

sendemail.php 中的 PHP 代码

<?php
header('Content-type: application/json');
$status = array(
    'type'=>'success',
    'message'=>'Email sent!'
);

$name = @trim(stripslashes($_POST['name'])); 
$email = @trim(stripslashes($_POST['email'])); 
$subject = "Example Contact";
$message = @trim(stripslashes($_POST['message'])); 

$email_from = $email;
$email_to = 'admin@example.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;

更新: 包含 class="contact-form" 时,js/jquery 中似乎存在问题。如果我忽略它,就会发送变量。

这是表单的 jquery 代码:

//contact form
var form = $('.contact-form');
form.submit(function () {
    $this = $(this);
    $.post($(this).attr('action'), function(data) {
        $this.prev().text(data.message).fadeIn().delay(3000).fadeOut();
    },'json');
    return false;
});

以下是一些相关帖子:
PHP Blank Email
Contact form won't submit data
js deleting submitted form data
PHP script sending mails but not showing form data
Post Data is not coming

【问题讨论】:

  • 它自己的表格(如最初在此处发布的)工作正常,这里有其他问题。 JS 触发器/事件阻止点击帖子?
  • 做一个 var_dump('$_POST');看看你会得到什么。
  • 我同意 Ivan 的观点,该表格适合我!

标签: jquery post http-post


【解决方案1】:

你打电话给jquery.post(),但你只说发帖到哪里,成功后该怎么做。你在发什么?第二个参数需要是您发布的数据:

$.post($(this).attr('action'), $(this).serialize(), function(data) {
    $this.prev().text(data.message).fadeIn().delay(3000).fadeOut();
},'json');

【讨论】:

  • 使用浏览器的网络检查器,注意表单发布。还要确保在更改 Javascript 代码后清除了缓存。
  • 谢谢!这是您所说的组合,以及页面上 js/form 元素的排序。现在我需要找出为什么它两次调用 js/mail 脚本。
猜你喜欢
  • 2013-02-05
  • 2012-06-28
  • 2014-09-15
  • 2016-10-06
  • 1970-01-01
  • 2016-11-02
  • 2012-05-17
  • 1970-01-01
  • 2016-05-06
相关资源
最近更新 更多