编辑:
所以我只是通过将axios get呼叫更改为post呼叫来实现此目的,与路由相同,不知道为什么要这样做?
来自:
javascript
axios.get('/globals/get-logged-user')
和
php
Route::get('/globals/get-logged-user','GlobalsController@getLoggedUser');
收件人:
javascript
axios.post('/globals/get-logged-user')
和
php
Route::post('/globals/get-logged-user','GlobalsController@getLoggedUser');
我正在尝试获取Header vue组件的当前经过身份验证的用户(如果存在),我还使用vuex存储模块来保持我的代码井井有条和分离。
过程如下:
当头组件被mount()时,我调度动作getLoggedUser。
现在在Globals商店内,我使axios接到路由/ globals / get-logged-user
的电话如果调用成功,我将更新状态,现在我的Header组件应该能够在mapState vuex helper的帮助下访问记录的用户数据。
现在实际发生了什么:
axios get调用已完成,它返回正200状态代码,但响应为空,没有任何内容从后端发回。
这是我的网络标签:
https://i.imgur.com/hlD9bAY.png
您可以看到其他ajax请求返回了实际数据,但get调用未返回任何内容,我还注意到GET调用的类型是html,是吗?
我的组件
<template>
<header class="header_maincontainer">
<div class="header_small_container">
<span>{{ loggedUser.email }}</span>
</div>
</header>
</template>
<!--SCRIPTS-->
<script>
import { mapState, mapActions } from 'vuex'
export default {
name: 'MainHeader',
computed: {
//...mapState('Globals', ['allGlobals', 'loggedUser', 'globals']),
...mapState('Globals', [ 'loggedUser']),
},
mounted() {
console.log(this.$options.name+' component successfully mounted');
this.getLoggedUser();
},
methods:{
//component actions declaration
...mapActions('Globals', ['getLoggedUser']),
}
};
</script>
<!--STYLES-->
<style scoped>
</style>
我的Globals vuex模块:
import axios from 'axios'
//STATE
const state = {
loggedUser:'',
loadingStatus:0
}
//GETTERS
const getters = {
}
//ACTIONS
const actions = {
getLoggedUser ({ commit }) {
commit( 'SET_LOAD_STATUS', {status: 1} );
axios.get('/globals/get-logged-user')
.then((response) => {
commit('GET_LOGGED_USER', { loggedUser: response.data.loggedUser })
console.log(response.data.loggedUser);
commit( 'SET_LOAD_STATUS', {status: 2} );
},
(error) => {
console.log(error);
commit( 'SET_LOAD_STATUS', {status: 3} );
})
},
}
//MUTATIONS
const mutations = {
GET_LOGGED_USER (state, loggedUser) {
state.loggedUser = loggedUser;
},
}
export default {
namespaced: true, state, getters, actions, mutations
}
还有我的laravel后端:
<?php
namespace App\Http\Controllers;
use App\Models\Globals;
use Illuminate\Http\Request;
class GlobalsController extends Controller
{
public function getLoggedUser(){
$loggedUser = Auth::user();
return response()->json([
'loggedUser' => $loggedUser
]);
}
}
请帮助我,这些天来我仍然坚持这样做。
答案 0 :(得分:0)
如果收到的200回复为空,则可能是您输入了错误的路线。
尝试添加调试输出或断点以检查您是否在正确的控制器功能中。