我使用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');
因此,我猜想在调用之前或调用中它会使我的参数无效。但是我不知道怎么做,因为我提出了很多要求,并且从未遇到过这个问题。
答案 0 :(得分:2)
来自axios文档
params
是要与请求一起发送的URL参数
这意味着,您应该使用PHP $_GET
获得该值。
或$_REQUEST
(既存储$_GET
,又存储$_POST
。也存储$_COOKIE
)。
另一方面,您可以按文档所述使用data
键
data
是要作为请求正文发送的数据仅适用于请求方法
PUT
,POST
和PATCH
因此该值将在$_POST
axios({
method: 'post',
url: dev.HOST+'getuserinfoobject',
data: {
jwt: token
}
})