2016-12-02 595 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> 

阿賈克斯部分:

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

控制研究呃部分:

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

控制器:

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

我錯過了「CSRF令牌」頁眉/輸入感謝 –

1

阿賈克斯Laravel 5

這主要是由於VerifyCSRFToken midd知道laravel爲我們提供了開箱即用的功能。當我們的請求發生令牌不匹配時,它會響應內部服務器錯誤(500)。

我們需要發送帶有令牌的AJAX請求發送到我們的瀏覽器。 的CSRF令牌大多存儲在元標記,你可以把它放在任何地方,雖然

$.ajaxSetup

爲將來的Ajax設置默認值要求

解決方案

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

希望這會有所幫助。