返回

在 Laravel API 中使用 PUT 方法从 Vue.js 发送数据时出错?这里有解决方案!

vue.js

在 Laravel API 中使用 PUT 方法从 Vue.js 发送数据

概述

使用 PUT 方法更新后端数据库时,开发者可能会遇到从 Vue.js 发送数据到 Laravel API 的问题。本文将提供一个详细的指南,解决此问题并提供一个可行的工作解决方案。

问题陈述

当使用 axios 从 Vue.js 发送 PUT 请求时,前端似乎没有向后端发送任何数据,导致 API 返回“数据错误”响应。

解决方案

要解决此问题,我们需要对 Vue.js 和 Laravel 端的代码进行修改:

Vue.js 前端:

使用 FormData 对象发送数据,如下所示:

const formData = new FormData();
formData.append('json', JSON.stringify(data));

Laravel 后端:

在控制器中,使用以下代码获取 JSON 数据:

$json = $request->input('json', null);

示例代码

Vue.js 前端:

editCustomer() {
  const data = {
    name: this.name,
    surname: this.surname,
    phone: this.phone,
    email: this.email
  };

  const formData = new FormData();
  formData.append('json', JSON.stringify(data));

  const url = `api/customers/update/${this.id}`;

  axios.put(url, formData)
    .then(res => {
      console.log(res.data.status);
    })
    .catch(error => {
      console.log(error);
    });
}

Laravel 后端:

public function update($id, Request $request) {

  $json = $request->input('json', null);
  $params_array = json_decode($json, true);

  // ... 其他代码略 ...
}

常见问题解答

1. 为什么需要使用 FormData 对象?

FormData 对象用于在 HTTP 请求中发送二进制数据,例如文件和 JSON 字符串。在这种情况下,我们使用它来发送 JSON 数据。

2. 为什么 json 是请求输入的键?

json 是我们在 Vue.js 中发送 JSON 数据时指定的键。在 Laravel 中,我们可以通过 input('json', null) 访问它。

3. 如何确保 JSON 数据是有效的?

在 Vue.js 中,我们使用 JSON.stringify() 来确保 JSON 数据的有效性。

4. 为什么我们需要 input('json', null)

input('json', null) 确保了当请求中没有 json 参数时,返回 null

5. 我怎样才能调试这个问题?

在开发控制台中检查网络请求并查看是否发送了 json 数据。您还可以使用 console.log() 输出 json 变量的内容。

结论

遵循本文中的步骤,您可以从 Vue.js 中成功使用 PUT 方法发送数据到 Laravel API。通过仔细修改前端和后端的代码,我们可以解决“数据错误”问题并确保数据传输的顺利进行。