一尘不染

laravel 5中的ajax发布返回错误500(内部服务器错误)

php

这是我在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(内部服务器错误)

我的代码有什么问题/问题?我缺少什么?


阅读 330

收藏
2020-05-29

共1个答案

一尘不染

虽然这个问题存在一段时间,但没有给出可接受的答案,我想向您指出解决方案。因为您使用的是ajax发送,并且大概仍在使用CSRF中间件,所以您需要在请求中提供一个附加的标头。

向每个页面(或主版面)添加一个元标记: <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。

2020-05-29