2016-12-02 509 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') 
 
    } 
 
    }); 
 
});

希望这会有所帮助。

相关问题