Мне нужна помощь в реализации базового запроса ajax через vue для моего laravel back-end, у меня есть логическое имя, завершенное на таблица, называемая курсами, и у меня есть представление, которое выбирает все курсы, назначенные конкретному пользователю, и позволяет им нажимать кнопку, чтобы изменить текущий статус курса, либо завершенный, либо нет, вот и все, вот и все, что я хочу сделать, прямо сейчас Я на полпути, я могу подать запрос ajax, но он только захватывает последний курс, который был подан в представление, я знаю, что это в конечном итоге окажется ошибкой с моей стороны, которую я не вижу, поэтому, пожалуйста, быть явным в вашем решении,Запрос Ajax с Vuejs + Laravel отправляет только последнюю часть информации, которая была отправлена на просмотр
Соответствующая часть КурсовКонтроллер:
public function toggling($name)
{
$course = Course::where(['name' => $name])->first();
$course->completed = !$course->completed;
$course->save();
return response()->json(['course' => $course], 202);
}
Экземпляр Вью, который расположен на главной странице макета (если это ошибка, пожалуйста, указать, что из):
<script>
new Vue({
el: '#app',
data: {
course: {
name: ''
}
},
methods: {
onSubmit: function($course) {
this.course.name = '{{$course->name}}',
axios.post('/MyCourses/' + this.course.name);
// .then(function (response){
// });
}
}
});
</script>
Форма часть зрения ответственного за предоставление курсов:
<tbody>
@foreach ($courses as $course)
<tr>
<td>{{ $course->name }}</td>
<td>{{ $course->appointment }}</td>
<td>{{ $course->room_id }}</td>
<td>
<form method="POST" action="{{ route('course.completed', $course->name) }}" id="form-submit">
{{ csrf_field() }}
@if ($course->completed == true)
<button @click.prevent="onSubmit" type="button" class="btn btn-sm" id="coursetogglingtrue">Done!</button>
@else
<button @click.prevent="onSubmit" type="button" class="btn btn-sm" id="coursetogglingfalse">Not Yet!</button>
@endif
</form>
</td>
</tr>
@endforeach
</tbody>
Если у вас есть время, я был бы признателен, если вы можете помочь сделать эту динамику, привязав идентификатор div к соответствующему классу в зависимости от состояния курса, я не могу сделать это прямо сейчас, попробовал и не смог выполните условие if внутри Vue insta сть.
И это один маршрут отвечает за запрос от web.php:
Route::post('/MyCourses/{name}', '[email protected]')->name('course.completed');
Прямо сейчас, скажем, у меня есть 4 курса на моей странице, если я нажал на любую кнопку, только последний курс будет предоставлен экземпляру vue, независимо от того, какую кнопку я нажал, я предполагаю, что, вероятно, структура моего представления - это то, что не так, я хотел бы знать, что вызывает проблему, также мои другие страницы ошибочны, потому что они не имеют доступа к объекту $ course, поэтому я предполагаю, что наличие всего этого в главном экземпляре Vue является большим нет-нет, еще раз, любые идеи/советы/рекомендации, которые вы имеете по проблеме или по мой код, пожалуйста, дайте мне знать, спасибо.
Огромное вам спасибо за ваш ответ, мне было очень грустно, потому что я не мог понять это, и мне показалось, что это так просто, но это так, но вы, сэр, спасли день, у меня есть пара вопросов, как насчет этого поля csrf? У меня есть один уже в моей форме на шаблоне клинка, или поскольку форма никогда не отправляется, защита csrf_field не активируется? второй вопрос, можете ли вы помочь мне с проблемой дизайна? Я просто хочу одну кнопку на мой взгляд, и эта кнопка будет зависеть от состояния курса. –
Я делаю это сейчас, но я получаю неожиданный конец файла, я знаю, что что-то не так в моем способе написания кода, но мне кажется, что вы можете посмотреть, ' методы: { onSubmit: function (course) { axios.post ('/ MyCourses /' + course.name) .then (функция (ответ) { @if (course.completed === истина) this.cssClass = 'coursetogglingtrue', this.text = 'Done!' }); } } ' –
Я хочу сделать что-то похожее на это, но я знаю, что это не сработает должным образом, потому что это означает, что он будет отображаться только при вызове этого метода, и это не то, что мы хотим, но это общее направление –