2017-05-25 169 views
0

嗨,我是Laravel的新手,我試圖使用ajax調用將一些數據傳遞給控制器​​。Laravel 5.2:如何使用ajax將數據傳遞給控制器​​

路線

Route::post('/category', '[email protected]'); 

控制器

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以下錯誤:
MethodNotAllowedHttpException在RouteCollection.php線218

+0

你打什麼網址?轉到網絡標籤,看看是否有任何問題。 –

+0

試試url:'/ category' – rchatburn

+0

另外,在執行ajax請求時,將csrf標記添加到數據參數中。 –

回答

0

嘗試這種情況:

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', '[email protected]'); 

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

看,如果有幫助。

+0

嗨,戴夫......它的作品! – Robert

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> 
相關問題