【发布时间】:2020-04-12 02:03:04
【问题描述】:
在我的 Laravel + Vue.js SPA(单页应用程序)中,我使用 axios 作为 HTTP 客户端来发出 POST 请求。在 Vue 组件中,即 Register.vue,我有:
axios.post('@{{ route("register") }}',
this.name, // the data to post
{ headers: {
'Content-type': 'application/json',
}
})
.then(response => {
this.result = response.data.bpi
})
.catch(error => {
console.log(error)
this.errored = true
});
但 Firfox 浏览器控制台在发出请求时显示 404 错误,并且 axios 尝试发出请求的 URL 显示为来自网络选项卡的 http://127.0.0.1:8000/@%7B%7B%20route(%22register%22)%20%7D%7D。
如何在axios ajax 请求中使用route('register') 作为URL?
编辑:
如果您想知道应用程序的架构,我将尝试在下面详细说明:
app.js 文件有:
window.axios = require('axios');
import router from './router';
import App from '../components/App.vue';
var app = new Vue({
el: '#app',
render: h => h(App),
router,
mount(){
console.log("Root instance mounted ");
}
});
router.js 文件有:
import Register from '../components/Register.vue';
export default new VueRouter({
mode: 'history',
routes: [
{ path: '/register', component: Register, name: 'register' }
],
web.php 有:
Auth::routes();// it contains login, register etc routes
我的App.vue 有:
<template>
<div>
<div id="toolbar">
My Toolbar
</div>
<router-view></router-view>
</div>
</template>
所以当/register URL 被命中时,app.js 加载App.vue 并根据router.js 中的路径规范,Register.vue 中的Register 组件在@ 中的<register-view></register-view> 的位置呈现987654344@ 文件。 Register.vue中相关的axiosajax部分之前已经给出。
EDIT2:
在RegisterController 里面,我去use RegistersUsers trait 思想IDE 导航并进行了以下更改:
public function showRegistrationForm()
{
//return view('auth.register'); //discarded this line
return view('app');
}
在assets/views/app.blade.php 里面,我有:
<body>
<div id="app"></div>
<script src="{{ asset('js/app.js') }}"></script>
</body>
【问题讨论】:
标签: laravel vue.js axios laravel-blade