【问题标题】:Laravel 5.6 Ajax post dataLaravel 5.6 Ajax 发布数据
【发布时间】:2019-04-08 04:20:39
【问题描述】:

我尝试在没有表单的情况下使用 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\Component\HttpKernel\Exception\MethodNotAllowedHttpException 没有消息

在 chrome 控制台上我可以看到我的帖子数据,但在 laravel 的错误页面上,帖子数据是空的。我不知道这是否正常。

有人可以帮我解决这个问题吗?我不能总是使用 get 来发送这种数据。

感谢您的帮助。

【问题讨论】:

    标签: php jquery ajax laravel laravel-5.6


    【解决方案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);
    
        }       
    })
    

    方法二:

    $.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);
    
        }       
    })
    

    【讨论】:

    • 这两种方法都不起作用。是csrf的问题,如果我把中间件里面的url去掉就可以了。我试图删除除触发 Ajax(使用 jquery.js)的按钮和标题之外的所有内容,但仍然无法正常工作。
    • 发送帖子请求到 '/etages/form' 而不是 'etages/form'
    • 它不起作用。它正在寻找localhost/etages/form 而不是localhost/app/public/copro/etages/gorm
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-07
      • 2015-03-29
      • 2018-06-16
      • 2018-08-12
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多