Laravel 5.2:如何使用 ajax 将数据传递给控制器

Laravel 5.2: how to pass data to controller using ajax

嗨,我是 Laravel 的新手,我正在尝试使用 ajax 调用将一些数据传递给控制器​​。

路线

Route::post('/category', 'FrontendController@category');

控制器

 public function category(Request $request){

     $data = $request->all();
 }

Ajax 来电

 var name= 'John';

        $.ajax({
            method: 'post',
            url: '{{url("/category")}}', 
            data: {'name' : name}, 
            success: function(response){ 
                console.log(response);

            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log(JSON.stringify(jqXHR));
                console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
            }
        });

使用上面的代码我得到了以下错误:
MethodNotAllowedHttpException RouteCollection.php 第 218 行

试试这个:

Step 1: Create BASE_URL in constructor of Controller

public function __construct() {
   if (!defined('BASE_URL')) define('BASE_URL', url('/') . '/');
}

Step 2: Define Route

Route::post('category', 'CategoryController@postCategory');

Step 3: Add "BASE_URL" to HTML and implement that in Script.

<script>
    var APP = APP || {};
    APP.baseUrl = "{{ BASE_URL }}";

    window.Laravel = <?php echo json_encode([
        'csrfToken' => csrf_token(),
    ]); ?>
</script>

然后,

$(function(){
    var loadMoreRequest = null;

    $('#formSubmit').on('click', function(){
        if (loadMoreRequest !== null) {
           return;
        }

        loadMoreRequest = $.ajax({
           url: APP.baseUrl + '/category',
           data: {'_token': window.Laravel.csrfToken},
           type: 'POST',
           asyn: false,
           success: function (data) {
               console.log('Yay!')

               loadMoreRequest = null;
           },
           error: function() {
               loadMoreRequest = null;
           }
        });
    });
});

看看,是否有帮助。

只需将 method: 'post' 替换为 type: 'post',它就会开始工作

并为每个 ajax 请求添加 csrf 令牌遵循此 Laravel CSRF Token

在您的 head 部分添加此元标记

<meta name="csrf-token" content="{{ csrf_token() }}">

然后将其添加到您的 javascript 部分

<script>
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
</script>