这是我在laravel 5中测试的ajax(请参阅下文)
$("#try").click(function(){ var url = $(this).attr("data-link"); $.ajax({ url: "test", type:"POST", data: { testdata : 'testdatacontent' }, success:function(data){ alert(data); },error:function(){ alert("error!!!!"); } }); //end of ajax });
和触发链接
<a href="#" id="try" data-link="{{ url('/test') }}">Try</a>
和我的路线
Route::post('test', function() { return 'Success! ajax in laravel 5'; });
但是当我在google chrome中运行控制台时,它给了我错误,并且未返回预期的响应“在laravel 5中返回’成功!ajax’;”
POST http://juliver.laravel.com/test 500(内部服务器错误)
我的代码有什么问题/问题?我缺少什么?
虽然这个问题存在一段时间,但没有给出可接受的答案,我想向您指出解决方案。因为您使用的是ajax发送,并且大概仍在使用CSRF中间件,所以您需要在请求中提供一个附加的标头。
向每个页面(或主版面)添加一个元标记: <meta name="csrf-token" content="{{ csrf_token() }}">
<meta name="csrf-token" content="{{ csrf_token() }}">
并添加到您的javascript文件(或页面内的部分):
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
有关更多详细信息,请参见https://laravel.com/docs/master/csrf#csrf-x-csrf- token。