Ajax jquery.min.js:4 POST 500 (Внутренняя ошибка сервера) laravel 5

Я получил эту ошибку от вызова Ajax! это получить действие из флажка, а затем отправить данные Ajax в метод контроллера,

jquery.min.js:4 POST http://localhost:8000/listhotelregisration 500 (Internal Server Error)

Вот часть кода HTML:

    <div style="display:block">
      <div>My hotel Lists</div>
        @foreach($myLists as $key => $val)
            {{ $val['name'] }
            {!! Form::checkbox($val['name'], $val['id'].','.$value['id']) !!} <br>
        @endforeach
       </div>

Аякс часть:

 $(function() {
              $("input[type='checkbox']").change(function() {
               var smi  = $(this).val();
                   // alert(smi);
               $.ajax({
                url: 'listhotelregisration',
                type: "post",
                data: {'checko':smi},
                success: function(data){
                  //alert(data);
                }
              });  

   });

Часть маршрута:

Route::post('listhotelregisration', 'ListhotelController@create');

Контроллер часть:

public function create(Request $request)
{
    $listhotel = new listhotel;
    $data = $request->all();
    $dataPrim = explode(",", $data);

    $listhotel->id_list= $dataPrim[0];
    $listhotel->id_hotel= $dataPrim[1]; 

    $listhotel->save();
    $response = "ok";
    return response ()->json ($response);

}

2 ответа

Аякс в Ларавел 5

Это в основном связано с промежуточным программным обеспечением VerifyCSRFToken, которое laravel предоставляет нам "из коробки". Он отвечает на внутреннюю ошибку сервера (500), когда по нашим запросам происходит несоответствие токена.

Нам нужно отправить наш запрос AJAX с токеном, отправленным в наш браузер. Токен CSRF в основном хранится в метатеге, но вы можете поместить его в любое место

$.ajaxSetup

Установить значения по умолчанию для будущих запросов Ajax

Решение

$(document).ready(function(){
  $.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });
});

Надеюсь это поможет.

Ошибка 500 будет означать, что это ошибка сервера. Чтобы точно знать, что пошло не так, вам нужно проверить ответ сервера.

В любом случае я бы отрегулировал ваши следующие части:

Javascript:

 $(function() {
          $("input[type='checkbox']").change(function() {
           var id_list  = $(this).attr('id_list');
           var id_hotel  = $(this).attr('id_hotel');  

           $.ajax({
            url: 'listhotelregisration',
            type: "post",
            data: {
                    'id_list': id_list,
                    'id_hotel':id_hotel
                  }
             }
       });  
  });

контроллер:

public function create(Request $request)
{
  $data = $request->only(['id_list', 'id_hotel']);
  $listhotel = listhotel::firstOrCreate($data)
  return response ()->json ("OK");
}
Другие вопросы по тегам