使用axios发送对象获取请求

Gal*_*van 17 laravel vue.js axios

我想发送一个带对象的get请求.将在服务器上使用对象数据来更新会话数据.但是这个对象似乎没有被正确发送,因为如果我尝试将其发回去打印出来,我只会得到:

" N; "

我可以用这样的jQuery来做它并且它有效:

 $.get('/mysite/public/api/updatecart', { 'product': this.product },  data => {     
              console.log(data);
           });
Run Code Online (Sandbox Code Playgroud)

该对象通过laravel从服务器发送回来,如下所示:

public function updateCart(Request $request){
      return serialize($request->product);
Run Code Online (Sandbox Code Playgroud)

同样的事情不适用于axios:

axios.get('/api/updatecart', { 'product': this.product })       
                .then(response => {
                    console.log(response.data);
            });
Run Code Online (Sandbox Code Playgroud)

我用axios设置了一个默认的baseURL,所以url是不同的.它正确到达api端点,函数返回发送的内容,这显然不是对象.结果我只得到" N ".

rai*_*7ow 33

Axios API与jQuery AJAX有点不同.如果你必须传递一些参数和GET请求,你需要使用object的params属性config(.get()方法的第二个参数):

axios.get('/api/updatecart', {
  params: {
    product: this.product
  }
}).then(...)
Run Code Online (Sandbox Code Playgroud)

  • 它实际上为我工作的方式是使用“数据”而不是“参数”。我使用async / await而不是then / catch的示例:`try {const res = await axios.get(“ / api / updatecart”,{数据:{product:this.product}}}}} catch(错误){控制台。日志(错误)}` (7认同)
  • @TelmoTrooper的方式实际上是为我工作的方式,而不是原始的答案,该答案实际上并未在请求正文中发送参数 (2认同)
  • 这实际上不起作用,params 配置选项始终作为[文档](https://github.com/axios/axios#request-config)中指定的查询参数放入 URL 中。我们也可以[检查其他方法](https://github.com/axios/axios/issues/787) 来这样做,但其中对我有用。 (2认同)
  • @FilipeBezerradeSousa 感谢您提供文档链接。我试图使用纯文本正文(使用“data”)发出 GET 请求,但它不起作用。必须重写为 POST 请求。 (2认同)