如何解决Ajax问题:laravel中500 Internal Server Error?

时间:2019-06-28 04:55:31

标签: ajax laravel

我尝试使用ajax从数据库中获取数据并在不刷新的情况下将其显示在刀片​​中,但是当我执行相同的步骤为另一个刀片获取不同的数据时,出现此错误:

  

POST http://localhost:8000/barangay/fetch 500(内部服务器错误)   jquery-3.3.1.js:9600。

以下是需要修复的代码:

这是我的刀刃:

enter image description here

这是我的ajax脚本:

enter image description here

这是我的路由器,用于提取属于所选城市的barangay:

enter image description here

这是我在控制器中获取数据的代码:

enter image description here

,这里是输出(错误:不返回任何内容): enter image description here

2 个答案:

答案 0 :(得分:0)

Laravel在发布请求中使用CSRF令牌,因此您需要在ajax请求中添加标头,如下所示:

$.ajaxSetup({
        headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

有关更多详细信息,您可以使用https://laravel.com/docs/5.8/csrf

答案 1 :(得分:0)

除了将CSRF令牌作为POST参数进行检查之外,VerifyCsrfToken中间件还将检查X-CSRF-TOKEN请求标头。例如,您可以将令牌存储在HTML meta标记中:

<meta name="csrf-token" content="{{ csrf_token() }}">

然后,一旦创建了meta标记,就可以指示jQuery之类的库将标记自动添加到所有请求标头中。这为基于AJAX的应用程序提供了简单便捷的CSRF保护:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
  

默认情况下,resources/js/bootstrap.js文件注册该值   csrf-token元标记与Axios HTTP库一起使用。如果你是   不使用该库,则需要手动配置   您的应用程序的行为。