如何使用 axios 发送对象?

How can I send an object using axios?

有没有办法使用 axios 将对象发送到 API?

这是我使用的代码:

axios.get('/api/phones/create/', {
    parameters: {
        phone: this.phone
    }
})
    .then(response => {
        console.log(response.data)
    })
    .catch(function (error) {
        console.log(error)
    })

在 php 方面,我有以下内容:

public function create($phone)
{
    return $phone;
}

我收到以下错误:

GET http://crm2.dev/api/phones/create 500 (Internal Server Error)
dispatchXhrRequest @ app.6007af59798a7b58ff81.js:256
xhrAdapter @ app.6007af59798a7b58ff81.js:93
dispatchRequest @ app.6007af59798a7b58ff81.js:662
app.6007af59798a7b58ff81.js:2266 Error: Request failed with status code 500
    at createError (app.6007af59798a7b58ff81.js:600)
    at settle (app.6007af59798a7b58ff81.js:742)
    at XMLHttpRequest.handleLoad (app.6007af59798a7b58ff81.js:158)

如果我尝试,axios.get('/api/phones/create/hello') 我会在控制台日志中得到 hello

有办法吗?

这取决于你"send an object"的意思。

由于您正在使用 GET 请求并在参数中传递对象,因此您可以将其序列化为查询参数作为 GET 请求的一部分。这不会真正发送对象,而是使用它来为 GET 请求构建 URL 的查询部分。

例如,您可以通过以下方式向 /api/phones/create?phone=123 发出请求:

axios.get('/api/phones/create/', {
    params: {
        phone: '123'
    }
})

如果您想实际将对象作为序列化 JSON 发送到您的 API,您可以使用 POST 或 PUT 请求,具体取决于您的 API.

例如,要将 { "phone": "123" } 发送到您的 api,您可以这样做:

axios.post('/api/phones/create/', {
  phone: '123'
});

注意: axios 需要参数的键params

首先尝试使用 params 而不是 parameters

Axios 依赖于 promises 如果您想支持旧浏览器,您可能需要 add promise polyfill 修改您的代码。

这是示例请求,阅读 official docs 了解更多信息。

axios.get('/url', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });