我从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>
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', '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);
}
答案 0 :(得分:1)
Laravel 5中的Ajax
这主要是由于laravel为我们提供开箱即用的VerifyCSRFToken中间件。当我们的请求发生令牌不匹配时,它会响应内部服务器错误(500)。
我们需要发送带有令牌的AJAX请求发送到我们的浏览器。 CSRF令牌主要存储在元标记中,您可以将其放在任何位置
$.ajaxSetup
为将来的Ajax请求设置默认值
<强>解决方案强>
$(document).ready(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
&#13;
希望这有帮助。
答案 1 :(得分: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");
}