2016-12-02 18 views
0

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

Controll部分:

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部分のご質問です。 AJAXリクエストとともに送られてきたCSRFトークンは表示されません。 500エラーは、CSRFトークンが検証されていないことが原因の可能性があります。 –

+0

ええ、私はちょうど "csrfトークン"ヘッダー/入力を追加する必要があることがわかりました –

答えて

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

コントローラー:Laravel 5で

public function create(Request $request) 
{ 
    $data = $request->only(['id_list', 'id_hotel']); 
    $listhotel = listhotel::firstOrCreate($data) 
    return response()->json ("OK"); 
} 
+0

私は "csrfトークン"ヘッダー/入力感謝しなかった –

1

アヤックス

これは主に、私はすでに次の作品を調整するだろういずれにせよ

VerifyCSRFToken middのためにlaravelが私たちにすぐに提供することを認めています。リクエストでトークンの不一致が発生した場合、内部サーバーエラー(500)に応答します。

トークンを使用してAJAXリクエストをブラウザに送信する必要があります。将来のAjaxのための

$.ajaxSetup

設定のデフォルト値は、要求しても CSRFトークンは、主にメタタグに格納され、あなたはそれを任意の場所に置くことができる

ソリューション

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

これが役に立ちます。

関連する問題