Axios AJAX调用使参数为空

时间:2018-10-07 18:29:35

标签: ajax vue.js axios

我使用Vuejs为我的项目创建前端。

在创建一个组件(“ TimeCapsy.vue”)时,我像这样对后端进行AJAX调用:

created: function () {
        if (verify.verify_login()) {
          let token = this.$cookies.get('jwt_us_cas');
          let params = {'jwt': token};
          console.log(params);
          axios({
            method: 'post',
            url: dev.HOST+'getuserinfoobject',
            params: queryString.stringify(params)
          })
            .then(response => {
              console.log(response.data)
            })
        }
      }

如您所见,我使用了

this.$cookies.get('jwt_us_cas');

获取我在登录时在客户端上设置的json网络令牌。

我使用queryString库对我的请求进行参数化。

我也尝试了不使用queryString.stringify(params)的情况,但是遇到了相同的错误,例如该参数仍然变为空。

当我在控制台日志中检查params变量时,得到以下输出:

{jwt:“ 我的令牌到了”}}

所以我可以看到它从cookie中获取了正确的值。

但是当我从后端(PHP)检查答案时,出现此错误:

Undefined index: jwt in <b>D:\casb\public\index.php</b> on line <b>52</b>

我当然知道这意味着jwt为空,但是我不明白为什么。

正如我所说,在打电话之前,我检查了参数并显示了令牌。

我用Postman和令牌作为jwt参数检查了端点,并返回了正确答案的成功呼叫。

正确的答案基本上只是一个嵌套对象,其中包含一些信息。

我的PHP端点也很基本:

Router::add('/getuserinfoobject', function () {
    $response['response'] = User::getUserInfoObject($_POST['jwt']);
    echo json_encode($response);
}, 'post');

因此,我猜想在调用之前或调用中它会使我的参数无效。但是我不知道怎么做,因为我提出了很多要求,并且从未遇到过这个问题。

1 个答案:

答案 0 :(得分:2)

来自axios文档

  

params是要与请求一起发送的URL参数

这意味着,您应该使用PHP $_GET获得该值。

$_REQUEST(既存储$_GET,又存储$_POST。也存储$_COOKIE)。

另一方面,您可以按文档所述使用data

  

data是要作为请求正文发送的数据

     

仅适用于请求方法PUTPOSTPATCH

因此该值将在$_POST

中可用
axios({
  method: 'post',
  url: dev.HOST+'getuserinfoobject',
  data: {
     jwt: token
  }
})