3 回答
TA贡献1993条经验 获得超5个赞
您将需要从 ajax 调用中欺骗您的方法,假设easyAjax允许它应包括的数据属性:
data: {
'_method' : 'PUT'
},
此外,您需要包含您的 csrf 令牌:
data: {
'_method' : 'PUT',
'_token' : '{{csrf_token()}}'
},
注意: '{{csrf_token()}}'只要脚本是刀片视图的一部分,就可以工作。如果没有,则使用标题:
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
如果您需要使用标头来包含您的 csrf 令牌,请确保在文档的头部部分包含元标记:
<meta name="csrf-token" content="{{ csrf_token() }}">
完整的解决方案:
$('#save-form').click(function () {
$.easyAjax({
url: '{{ route('admin.settings.update', ['1']) }}',
container: '#editSettings',
type: "POST",
data: {
'_method' : 'PUT',
'_token' : '{{csrf_token()}}'
},
redirect: true,
file: (document.getElementById("logo").files.length != 0 ||
document.getElementById("login_background").files.length != 0) ? true : false
})
});
TA贡献1794条经验 获得超7个赞
您正在发布数据。当您在路由器中发布数据并使用资源时,laravel 会调用 store 函数,而您的路由不允许(['only' => ['edit', 'update', 'index', 'change-language']).
为了测试它,将商店功能添加到您的路线中,dd($request);
您可以看到您的request;
TA贡献1801条经验 获得超8个赞
这正是问题所在。最后我写了下面的代码来得到预期的结果
$('#save-form').click(function () {
$.easyAjax({
url: '{{ route('admin.settings.update', ['1']) }}',
container: '#editSettings',
type: "POST",
data: {
'company_name': $('#company_name').val(),
'company_email': $('#company_email').val(),
'company_phone': $('#company_phone').val(),
'website': $('#website').val(),
'address': $('#address').val(),
'currency_id': $('#currency_id').val(),
'timezone': $('#timezone').val(),
'locale': $('#locale').val(),
'latitude': $('#latitude').val(),
'longitude': $('#longitude').val(),
'_method' : 'PUT',
'_token' : '{{csrf_token()}}'
},
redirect: true,
file: (document.getElementById("logo").files.length != 0 || document.getElementById("login_background").files.length != 0) ? true : false
})
});
- 3 回答
- 0 关注
- 118 浏览
添加回答
举报