この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
記事更新者:T
更新日時:
2018-09-30 12:02:09

ajaxでPOST通信する際の注意点

LaravelにおいてajaxでPOST通信する際は通常のPOST通信と同様に「csrf-token」を含める必要があります。

 

まずLayoutのheadタグ内に「csrf-token」を含める。

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

 

ajaxのパラメータにトークンを渡す。

<?php
$ajaxUrl = "/testAjax";
?>

<script>
function testFunc(id){
    
 
  var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');

    url = <?php echo json_encode($ajaxUrl); ?>;

    $.ajax({
        url         : url,
       
type        : 'post',
        dataType    : 'json',
        data        : {
           
_token: CSRF_TOKEN,
            id    : id
        }
    })
    .done(function(response) {
        console.log(response);

        if(response['data'] != null) {

//処理

        } else {
            alert(エラー);
        }
    })
    .fail(function(response) {
        alert('エラー');
    });
};  
</script>

 

コントローラー側のサンプル。(web.appにルーティングの設定を忘れずに)

public function testAjax(Request $request){
        
    $id = $request->id;

    //処理 例: dataをDBから取得を取得
        
    return response()->json(
            [
//                '
data' => $collections
            ],
            200,[],
            JSON_UNESCAPED_UNICODE
        );        
    }