【问题标题】:contentType: false and processData: false make POST empty in PHPcontentType: false 和 processData: false 在 PHP 中使 POST 为空
【发布时间】:2018-09-15 17:59:42
【问题描述】:

我正在尝试使用 AJAX 将文件上传到我的服务器。 AJAX 调用工作正常,我的 PHP 正确返回,但是当我添加 contentType: falseprocessData: false 时,它不再返回。

var formData = new FormData();
formData.append('image', input.files[0]);

$.ajax({
    url: "php/API.php",
    data: {action: "changeProfilePicture", profilePicture: formData},
    type: "POST",
    contentType: false, // if i remove this
    processData: false, // and this, and my form data in `data:` then POST is not empty
    success: function(resp) {
        console.log(resp)
    }
});

// inside of php/API.php
<?php
    // post is empty
    print_r($_POST);

    if(isset($_POST) && !empty($_POST)) {
        ...
    }
?>

【问题讨论】:

  • 好吧,contentType 描述了发送到您的 API 的数据,并且 processData 设置是否以及如何根据 contentType 处理数据。所以 contentType 不应该是假的。
  • 删除contentType后POST仍为空。

标签: javascript php ajax post


【解决方案1】:

使用jQuery.ajax发送multipart/formdata时,请求数据应该是FormData的一个实例。 例如

var formData = new FormData();
formData.append('image', input.files[0]);
formData.append('action', 'changeProfilePicture');
$.ajax({
    url: "php/API.php",
    data: formData,
    type: "POST",
    contentType: false, 
    processData: false,
    ...

【讨论】:

    猜你喜欢
    • 2021-08-30
    • 2016-09-18
    • 2020-06-13
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 2015-09-30
    • 2014-05-13
    相关资源
    最近更新 更多