我试图将数据发送到无格式的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'
]);
}
但是每次我尝试发布不带表单的数据时,无论我使用什么触发器(数据表,onclick ...),我都会收到此消息:
Symfony \组件\ HttpKernel \ Exception \ MethodNotAllowedHttpException 没有消息
在chrome控制台上,我可以看到我的帖子数据,但是在laravel的错误页面上,帖子数据为空。我不知道这是否正常。
有人可以帮助我解决这个问题吗?我不能总是使用get发送此类数据。
感谢您的帮助。
答案 0 :(得分:4)
方法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);
}
})
答案 1 :(得分:1)
您的链接“ etages / form”,是否已在api路由中定义了它。 如果您在api路由中进行了定义,则应类似于此“ / api / etages / form”。