这里的情况是,我想从数据库中获取一些数据并将其显示给用户。当有人提供一些输入并将其保存到数据库时,我会将状态设置为始终" 0
"直到有人看到它。因此,无论何时提交输入,用户都会看到弹出屏幕,其中新数据已插入另一页面。这里的问题是当ajax获得了一些状态" 0
"它显示为屏幕,但当它无法获取任何值(when all the status value is 1
)时,它在控制台中显示错误:
TokenMismatchException in VerifyCsrfToken.php line 67
。
如何解决问题,请提出任何可能的建议?
这是路线:
Route::post('/unread',[
'uses'=>'ItemController@getUnread',
'as'=>'unread'
]);
Route::post('/s_update',[
'uses'=>'ItemController@status_update',
'as'=>'s_update'
]);
这是控制器:
public function getUnread()
{
$items=DB::select(DB::raw("SELECT count(*) as total from items where status =0"));
// $data=mysql_fetch_assoc($items);
return Response::json($items);
}
public function status_update()
{
$items=DB::select(DB::raw("UPDATE items SET status=1 WHERE status=0"));
return Response::json($items);
}
这是ajax调用:
<script type="text/javascript">
setInterval(function(){
$(".container").load("list", function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type : "POST",
url : "{{url('unread')}}",
dataType : 'json',
success : function(data) {
$.each(data,function(index,subcatObj){
if(subcatObj.total != '0')
{
var yes = confirm('You have '+subcatObj.total+' new messages');
if(yes){
status_update();
}
}
});
},
});
});
}, 3000);
function status_update(){
$.ajax({
url:"{{url('s_update')}}",
method:"POST",
});
}
</script>
答案 0 :(得分:1)
更改此路线
Route::post('/unread',[
'uses'=>'ItemController@getUnread',
'as'=>'unread'
]);
到
Route::get('/unread',[
'uses'=>'ItemController@getUnread',
'as'=>'unread'
]);
答案 1 :(得分:0)
我认为这是因为你没有在帖子中发送laravel csrf令牌。
您需要发送一个名为&#34; _token&#34;的字段在json中提供的是csrf_token。
答案 2 :(得分:0)
{{csrf_field()}}
使用它来生成表单中的csrf令牌