Laravel 5.6 Ajax发布数据

时间:2018-07-07 04:08:53

标签: php jquery ajax laravel laravel-5.6

我试图将数据发送到无格式的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发送此类数据。

感谢您的帮助。

2 个答案:

答案 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”。