Возникли проблемы при отправке данных с использованием AJAX в мою БД в Laravel - PullRequest
0 голосов
/ 27 марта 2019

Я изучал, как отправлять запросы AJAX, используя Laravel, и никуда не денусь. Кажется, AJAX работает, когда я удаляю свои функции отправки / нажатия и просто говорю «оповещение (« тест »)», он появляется среди нажатия кнопки. Однако, когда я нажимаю кнопку «Подтвердить», мой маршрут не вызывается, что запрашивает входные данные из моего текстового поля, поэтому обновление не выполняется при проверке базы данных MYSQL.

Я позаботился о том, чтобы включить заголовки CSRF в мою форму и AJAX, а также установил тип кнопки «button», чтобы предотвратить отправку фактической формы. Может кто-нибудь, пожалуйста, укажите мне правильное направление, будь то мой AJAX, контроллер или код веб-маршрута, который является причиной моей проблемы. Я пытался найти решение в течение последних 2 дней, но у меня ничего не получалось. Кроме того, между билетом и ответом существует отношение один ко многим, поэтому я получаю доступ к данному ответу на билеты и соответствующим образом обновляю его. Я также уже пытался не отправлять его в формате JSON и все еще не работает.

Это моя разметка формы:

<div class="modal-body">
<form id="edit-reply">
@csrf
@method('PATCH')
<div class="form-group">
<textarea class="form-control testing" id="edit-box" rows="12"name="edit-message"                                                              placeholder="{{$r->message}}" required></textarea>
</div>
<button type="button" class="btn btn-light btn-outline-dark" id="edit-button" data-dismiss="modal"style="font-weight: bold;">Confirm</button>
</form>

Разметка для AJAX

<script type="text/javascript">
jQuery(document).ready(function () {
$('#edit-button').on('submit', function (e) {
e.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "{{ route('ticket.create', $slug->slug) }}",
type: 'PATCH',
data: {
message: jQuery('#edit-box').val()
},
success: function (result) {
jQuery('.alert').show();
jQuery('.alert').html(result.success);
}
});
});
});
</script>

TicketController

public function editReply(Ticket $ticket)
    {
        $t = $ticket->reply()->update(request(['edit_message']));
        return response()->json($t);
}

код для маршрута

Route::patch('ticket/{ticket}', 'TicketController@editReply')->name('ticket.edit-reply');

1 Ответ

0 голосов
/ 29 марта 2019

Попробуйте передать заголовок так, как это могут быть его работы:

$.ajaxSetup({ 
   headers:{ 
      "Authorization": "Bearer " + $('meta[name="csrf-token"]').attr('content') 
   } 
});
...