【问题标题】:AJAX form posting to PHP script but $_POST is empty in PHP scriptAJAX 表单发布到 PHP 脚本但 $_POST 在 PHP 脚本中为空
【发布时间】:2019-05-31 01:06:01
【问题描述】:

Ajax 表单发布到 php 脚本但 $_POST 在 php 脚本中为空

我有一个通过 ajax 发布数据的联系我们表格。在表单上提交 ajax 将数据发布到 PHP 脚本,但是 $_POST 在 PHP 脚本中始终为空。标头已发送,请求有效负载包含我需要的所有发布信息,但 PHP 脚本中的 $_POST 仍然为空。

HTML 表单

<form action="contact.php" method="post" novalidate="novalidate" 
id="contact-form">
<input name="name" id="name" type="text" value="" >
<input type="text" name="address" id="address" value="" >
<input type="submit" value="Send" id="submit_contact">
</form>

JQUERY

       $.ajax({
        type: 'POST',
        url: 'contact.php',
        dataType: 'json',
        contentType: 'application/json',
        cache: false,
        data: $('#contact-form').serialize(),
        success: function(data) {
            if(data.info !== 'error'){                  
             //success
            } else {
                console.log(JSON.stringify(data));
                //failure
            }
        }
    });

PHP

if(isset($_POST['name']) and isset($_POST['address']))){
      //Process
} else {
  //success
}

$_POST 始终返回 null 但我想获取名称和地址的发布值。

【问题讨论】:

  • 查看这个关于发布 json 的答案。 stackoverflow.com/a/14794856/3585500
  • @ourmandave — 这是关于解析 POST 的 JSON,但由于问题中的代码首先不是 POST JSON,所以它并没有真正的帮助。

标签: php jquery ajax


【解决方案1】:
contentType: 'application/json',

您声称您正在发布 JSON,PHP 没有默认解析器,因此 PHP 不会尝试解析它并且不会填充 $_POST

既然你不是发布 JSON($('#contact-form').serialize() 返回 URL 编码数据,而不是 JSON),只需删除谎言,它就会起作用。

【讨论】:

    猜你喜欢
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 2017-04-27
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多