Laravel 5.6 Ajax发布数据

问题描述 投票:1回答:2

我尝试将数据发送到没有表单的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来发送这种数据。

谢谢您帮忙。

php jquery ajax laravel laravel-5.6
2个回答
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
投票

您的链接'etages / form',您是否已在api路线中定义它。如果你已经在api路由中定义,那么它应该是这样的'/ api / etages / form'。

© www.soinside.com 2019 - 2024. All rights reserved.