首页 > 解决方案 > jQuery 表单数据传递为空

问题描述

我有一个 ajax 调用,在提交按钮上单击 ajax 调用启动

<form id="editPet" method="patch" enctype="multipart/form-data">

    inputs...

    <button id="updatePet" data-id="{{ $pet->uuid }}" data-token="{{ csrf_token() }}" type="button">SAVE</button>
</form>

阿贾克斯调用:

$('#updatePet').click(function(e) {
    e.preventDefault();
    let petId = $(this).data("id");
    $.ajaxSetup({ headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}});
    $.ajax({
        url: "/my/pet/update/" + petId,
        type: "patch",
        data: new FormData($("#editPet")[0]),
        cache: false,
        contentType: false,
        processData: false,
        success: function(response) {
            // Do something
        },
        error: function(error) {
            // Do something
        }
    });
});

在服务器端,我收到的dd($request->all())是空数组的请求。

我在这里想念什么?

标签: javascriptjqueryajaxlaravelrequest

解决方案


该问题通过删除解决:

contentType: false,
processData: false,

正如评论中提到的@Taplar,

“默认情况下,作为对象(从技术上讲,不是字符串)传递给数据选项的数据将被处理并转换为查询字符串,适合默认的内容类型“application/x-www-form-urlencoded "


推荐阅读