我尝试将数据发送到没有表单的Ajax帖子的页面,但它不起作用。
我想我的问题来自crs,但我无法找到如何让它工作。
在我的页面标题中,我有;
<meta name="csrf_token" content="{{ csrf_token() }}">
然后,对于这个例子,我有一个带有重新排序插件的数据表。当重新排序事件被触发时,我使用Ajax调用(但是无论我做什么来发送Ajax除了表单之外我的问题都会发生)。
table{{$batiment->id}}.on( 'row-reorder', function ( e, diff, edit ) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: 'etages/form',
type: 'POST',
data: {item_id : 1},
dataType: 'json',
success: function( data ) {
console.log(data);
}
})
});
我的路线:
Route::post('/etages/form', ['as' => 'etages.form', 'uses' => 'Copro\EtageController@form']);
我的控制器中的函数表单(此函数与表单发布数据配合良好):
public function form(Request $request)
{
$request->flash();
return response()->json([
'error' => 'false'
]);
}
但是每当我尝试发布没有表单的数据时,无论我使用什么触发器(datatable,onclick ......),我都有这样的信息:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException没有消息
在chrome控制台上我可以看到我的帖子数据,但是在laravel的错误页面上,帖子数据是空的。我不知道这是否正常。
有人可以帮我解决这个问题吗?我不能总是使用get来发送这种数据。
谢谢您帮忙。
方法1:
var csrf = $('meta[name="csrf-token"]').attr('content');
$.ajax({
url: '/etages/form',
type: 'POST',
data: {item_id : 1, '_token': csrf},
dataType: 'json',
success: function( data ) {
console.log(data);
}
})
方法2:
$.ajaxSetup({
headers: {
'X-XSRF-TOKEN': decodeURIComponent(/XSRF-Token=([^;]*)/ig.exec(document.cookie)[1])
}
});
$.ajax({
url: '/etages/form',
type: 'POST',
data: {item_id : 1},
dataType: 'json',
success: function( data ) {
console.log(data);
}
})
您的链接'etages / form',您是否已在api路线中定义它。如果你已经在api路由中定义,那么它应该是这样的'/ api / etages / form'。