我使用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)调用的情况下尝试了它,但是我得到了相同的错误,例如,参数仍然变为null。
当我查看控制台日志时,我检查了params变量,得到了以下输出:
{jwt:“我的令牌来了”}
所以我可以看到,它从cookie中得到了正确的值。
但是,当我从后端(PHP)检查答案时,我会得到以下错误:
Undefined index: jwt in <b>D:\casb\public\index.php</b> on line <b>52</b>当然,我知道这意味着,jwt是空的,但是我不明白为什么。
就像我说过的,在我打电话之前,我会检查params,它会显示令牌。
我以Postman和令牌作为jwt参数检查了端点,它返回了一个带有正确答案的成功调用。
正确的答案基本上只是一个嵌套的对象,其中包含了一些信息。
我的PHP端点也非常基本:
Router::add('/getuserinfoobject', function () {
$response['response'] = User::getUserInfoObject($_POST['jwt']);
echo json_encode($response);
}, 'post');所以我猜就在我调用之前或者在我的调用中,它取消了我的参数。但是我不明白我是怎么做到的,因为我提出了很多要求,而且从来没有遇到过这个问题。
发布于 2018-10-07 18:49:43
从axios文档
params是与请求一起发送的URL参数。
这意味着,您应该使用PHP获得值。
或者$_REQUEST (同时存储$_GET和$_POST )。也是$_COOKIE)。
另一方面,您可以使用data密钥,如docs所述。
data是作为请求体发送的数据。 仅适用于请求方法PUT__POST__和PATCH
所以这个值在$_POST中是可用的。
axios({
method: 'post',
url: dev.HOST+'getuserinfoobject',
data: {
jwt: token
}
})https://stackoverflow.com/questions/52691598
复制相似问题