#javascript #laravel #vuejs2 #axios #single-page-application
#javascript #laravel #vuejs2 #axios #одностраничное приложение
Вопрос:
Используя Vue (SPA) в Laravel-8
, я пытаюсь использовать событие и извлечь некоторые данные из компонента, но данные не извлекаются, и я получаю ошибку: — 404
исключение «Symfony Component HttpKernelExceptionNotFoundHttpException»
Вот Contacts.vue, который я использую для отправки запроса события displayMessages:-
<template>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Contacts List</div>
<div class="card-body">
<ul v-for="contact in contacts" :key="contact.id" >
<li>
<button @click="displayMesages(contact.id)">
{{contact.name}}
</button>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data(){
return {
contacts: []
}
},
mounted() {
axios.get('/api/contacts-list')
.then(response => this.contacts = response.data)
},
methods: {
displayMesages(id){
console.log(id);
DisplayMessages.$emit('refresh', id);
}
}
}
</script>
Вот displayMessages.vue, где принимается запрос:-
<template>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Display Messages</div>
<div class="card-body">
<h2 v-for="message in messages">{{message.message}}</h2>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
// import contacts from './ContactsList.vue';
export default {
data() {
return {
contacts: [],
messages: []
}
},
mounted() {
DisplayMessages.$on('refresh', (id)=>{
axios.get('/api/display-message/' id).then(response => this.messages = response.data)
});
}
}
</script>
Вот маршрут, который извлекает displayMessages:-
Route::get('/api/display-messages/{id}', [AppHttpControllersChatsController::class, 'displayMessages']);
Вот контроллер:-
public function displayMessages($id)
{
return Chats::all();
}
Комментарии:
1. вы говорите, что используете
api/display-message/{id}
, но показываете другой маршрут,api/display-messages/{id}
…message != messages
2. В моем web.php файл У меня есть этот маршрут
Route::get('/api/display-messages/{id}', [AppHttpControllersChatsController::class, 'displayMessages']);
, и я использую тот же маршрут в моем displayMessages.vue axios, и я получаю эту ошибку, поскольку я всего лишь новичок, я не знаю, что означает эта ошибка и почему она показывает, что не так с моими кодами.3. ваш код javascript использует
axios.get('/api/display-message/' id)
… это неapi/display-messages/{id}
так … снова,message != messages
4. Ооо, Манн, спасибо… Так что это просто потому, что я использую message, а не messages в своих axios. Я не могу это проверить, потому что мой ноутбук просто сломался.
5. @lagbox Вы были правы, это была просто опечатка, можете ли вы опубликовать это как ответ, чтобы я мог пометить его правильно
Ответ №1:
Ошибка ввода в displayMessages.vue в маршруте axios:-
mounted() {
DisplayMessages.$on('refresh', (id)=>{
axios.get('/api/display-message/' id).then(response => this.messages = response.data) //It should be '/api/display-messages/`
});
}
Ответ №2:
Действительно ли этот маршрут существует и возвращает что-то?
/api/contacts-list
Комментарии:
1. Да, он возвращает контакты, ошибка исходит от
/api/display-message/{id}