Ajax jquery.min.js:4 POST 500(内部服务器错误)laravel 5
问题描述:
我从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);
}
答
错误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令牌”页眉/输入感谢 –
答
阿贾克斯Laravel 5
这主要是由于VerifyCSRFToken midd知道laravel为我们提供了开箱即用的功能。当我们的请求发生令牌不匹配时,它会响应内部服务器错误(500)。
我们需要发送带有令牌的AJAX请求发送到我们的浏览器。 的CSRF令牌大多存储在元标记,你可以把它放在任何地方,虽然
$.ajaxSetup
为将来的Ajax设置默认值要求
解决方案
$(document).ready(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
希望这会有所帮助。
在AJAX部分的一个问题。我没有看到任何与AJAX请求一起发送的CSRF令牌。 500错误可能是由于CSRF令牌未被验证。 –
是啊,我刚刚发现我需要添加“CSRF令牌”页眉/输入,感谢 –