【问题标题】:Laravel PATCH Request doesn't read Axios form dataLaravel PATCH 请求不读取 Axios 表单数据
【发布时间】:2019-08-02 15:33:42
【问题描述】:

我正在尝试向 Laravel 5.6 api 发送 Axios PATCH 请求。 我的请求包含FormData

Laravel 的 api 端点不会读取任何发送的数据。

ReactJS 代码

let data = new FormData();
data.append("photo", this.state.photo);
// append another data ....

const headers = { 
  'Content-Type': 'multipart/form-data',
  'enctype' : 'multipart/form-data',
  'Authorization' : 'Bearer ' + token 
}

axios({
  method : "PATCH",
  baseURL: this.baseURL,
  url    : url,
  params : params,
  data   : data,
  headers: headers,
}).then(response => {
  return response
})

Laravel 补丁请求

public function update(Request $request, $planId)
{
    $data = $request->all();
    dd($data);
}

Laravel 请求打印一个空数组 []

【问题讨论】:

  • 您检查过发送到服务器的数据包含哪些内容吗?
  • 是的,我使用 reactjs 和 redux,我在将数据从视图发送到操作后打印数据并在操作中打印它并且它存在但是当它发送到 laravel 时它不会读取它
  • @AbeerElhout 请检查您的网络选项卡以确保将数据发送到端点
  • 您是否通过网络控制台检查过哪些数据是真正发送的?此外,尝试进一步调试哪些数据到达服务器 - 您可以使用另一个原始 PHP 脚本来简单地转储该数据
  • @phaberest 是的,我做了这个检查并且数据存在

标签: php reactjs laravel axios


【解决方案1】:

很遗憾,但事实是,当从浏览器请求时,Laravel 无法正确响应 PATCH 或 PUT 请求。

一个快速的解决方案可能是使用 POST 并添加 _method: PATCH 作为 post 参数。

请尝试使用此更新后的代码

let data = new FormData();
data.append("_method", 'PATCH');
data.append("photo", this.state.photo);
// append another data ....

const headers = { 
  'Content-Type': 'multipart/form-data',
  'enctype' : 'multipart/form-data',
  'Authorization' : 'Bearer ' + token 
}

axios({
  method : "POST",
  baseURL: this.baseURL,
  url    : url,
  params : params,
  data   : data,
  headers: headers,
}).then(response => {
  return response
})

可以在axios.patch / axios.put is not working in Vue and Laravel中找到另一个相同问题的示例

【讨论】:

  • 非常感谢......在这个问题上花了几个小时之后。
  • 我的朋友我也去过那里;)
  • 非常感谢……我也为此苦苦挣扎了 4 个小时
猜你喜欢
  • 1970-01-01
  • 2020-06-05
  • 2021-01-20
  • 2014-01-01
  • 2019-04-26
  • 2015-03-10
  • 2020-02-14
相关资源
最近更新 更多