我尝试使用ajax从数据库中获取数据并在不刷新的情况下将其显示在刀片中,但是当我执行相同的步骤为另一个刀片获取不同的数据时,出现此错误:
POST http://localhost:8000/barangay/fetch 500(内部服务器错误) jquery-3.3.1.js:9600。
以下是需要修复的代码:
这是我的刀刃:
这是我的ajax脚本:
这是我的路由器,用于提取属于所选城市的barangay:
这是我在控制器中获取数据的代码:
答案 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库一起使用。如果你是 不使用该库,则需要手动配置 您的应用程序的行为。