2016-12-02 3 views
0

Я получил эту ошибку от звонка Ajax! это получить действие от флажка затем отправить данные по Ajax методу контроллера,Ajax jquery.min.js: 4 POST 500 (Внутренняя ошибка сервера) laravel 5

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> 

Ajax часть:

$(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', '[email protected]'); 

Контроллер er part:

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); 

} 
+0

Вопрос на AJAX часть. Я не вижу токена CSRF, отправленного вместе с запросом AJAX. Ошибка 500 может быть из-за не подтвержденного токена CSRF. –

+0

Да, я только что нашел, что мне нужно добавить заголовок/вход csrf-token, спасибо –

ответ

0

ошибка 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"); 
} 
+0

Я пропустил заголовок «csrf-token» header/input thanks –

1

Ajax в Laravel 5

В основном это из-за VerifyCSRFToken midd leware, что laravel обеспечивает нас из коробки. Он отвечает на ошибку внутреннего сервера (500), когда несоответствие токенов происходит в наших запросах.

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

$.ajaxSetup

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

Решение

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

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

Смежные вопросы