我想在laravel中使用vuejs显示具有特定ID的数据。我从链接中获得ID,但似乎没有向控制器发送请求。API.php:
<?php
use Illuminate\Http\Request;
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::resource('user','API\UserController');
Route::resource('departement','API\DepartementController');
Route::resource('specialite','API\SpecialiteController')->parameters(['specialite'=>'id']);
我的控制器:
public function show($id)
{
$specialite=Specialite::with('dep')->findOrFail($id);
$spec = Specialite::with('dep')->where('id',$specialite)->get();
return $spec;
}
我的观点:
<script>
export default {
data(){
return{
specialites:{},
form: new Form({
id:'',
name:'',
user_id:'',
bio:''
}),
id:0,
}
},
methods: {
loadspecialite(){
//axios.get('api/user').then(({data})=>(this.enseignants=data.data));
axios.get('api/specialite/'+this.id).then(response=>{this.specialites=response.data;});
},
created() {
this.id=this.$route.params.id;
this.loadspecialite();
Fire.$on('AfterCreate',()=>{
this.loadspecialite();
})
}
}
</script>
用户路由器:
let routes = [
{ path: '/Profile/:id', component: require('./components/a.vue').default },
]
谢谢,希望你能帮我。
3条答案
按热度按时间jbose2ul1#
首先,我看不出www.example.com如何this.id从路由器中携带id,因为在路由器路由后,创建的id不一定会被触发。
您的
loadspecialite
应该在调用时从currentRoute
获得值,我认为var有一点错误:您的路线资源应为:
Route::resource('specialite','API\SpecialiteController');
请求URI将为:
axios.get(
/api/specialite/${id}).then(...)
您可以通过使用SSH终端运行控制台命令来找出Laravel中所有注册路由的确切URI路径:
php artisan route:list
这应产生以下结果:
另外,如果你不发送任何附件,就不需要创建表单对象,Laravel和axios将在 AJAX 请求中默认使用JSON。
默认情况下,Laravel将返回JSON对象,以响应直接来自控制器上资源的JSON AJAX 调用:
Fail将返回一个400+的头文件,该头文件可以由axsios .catch处理
.catch( error => { console.log(error.response.message) } )
确认消息中的Laravel可通过以下方式访问:
.catch( error => { console.log(error.response.data.errors) } )
Axios将对象/数组作为JSON请求发布:
clj7thdc2#
我确信代码运行良好。这是vue组件对象中的格式错误。基本上,您的
created()
处理程序在due方法中,因此当创建的事件完成时,它不会被处理。您应该做的只是从方法中删除created(),并再次检查函数的语法。
x一个一个一个一个x一个一个二个x
oug3syen3#
所有的东西都设置好了,只是你的show方法应该在JSON中响应: