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

时间:2017-05-25 12:42:03

标签: laravel laravel-5.2 laravel-5.3

您好我是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);
            }
        });

使用上面的代码我gef跟随错误:
RouteCollection.php第218行中的MethodNotAllowedHttpException

2 个答案:

答案 0 :(得分:1)

只需将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>

答案 1 :(得分:0)

试试这个:

  

步骤1:在Controller

的构造函数中创建BASE_URL
public function __construct() {
   if (!defined('BASE_URL')) define('BASE_URL', url('/') . '/');
}
  

第2步:定义路线

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

第3步:添加&#34; BASE_URL&#34;到HTML并在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;
           }
        });
    });
});

看,如果有帮助。