본문 바로가기
Framework/Laravel Framework

[Laravel] ajax 통신하여 컨트롤러에서 값 처리하는 방법

by 원동호 2019. 12. 17.
반응형

라라벨에서 ajax통신을 하기 위해서는 csrf-token 값이 필요하다.

 

ajax통신을 하려는 .blade.php 파일 내에 아래 문장을 선언해준다.

 

TYPE이 POST일 경우에는 ajax 내 dataType을 선언해주고, GET일 경우에는 선언 해주지 않아야함!

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

 

$.ajax({
       //아래 headers에 반드시 token을 추가해줘야 한다.!!!!! 
       headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
       type: 'post',
       url: '{{ route('web.php에 선언된 route 경로') }}',
       dataType: 'json',
       data: { 원하는 데이터 },
       success: function(data) {
            console.log(data);
       },
       error: function(data) {
            console.log("error" +data);
       }
});

 

토큰을 추가 하지 않으면 위와 같이 419 에러가 발생한다. 자세한 내용은 아래의 링크를 참고하면 될 것 같다.

https://stackoverflow.com/questions/46472812/ajax-laravel-419-post-error

 

Ajax LARAVEL 419 POST error

I would really appreciate some help on this. I tried tons of solutions as posted in this forum, but I cannot get it to work. My ajax call is something like $(document).ready(function() { $("#

stackoverflow.com

아래는 컨트롤러이다. ajax에서 data 부분에 직접 json 데이터를 'test' : 'test' 이런 형태로 넣는다면 $request->input('test')json key값으로 데이터를 받으면 되지만 자바스크립트 변수를 선언하여 json 형태로 만든다면 $request->input('변수이름.jsonkey값')으로 데이터를 받아야 한다.

public function newjoinband(Request $request)
  {
    $sDev_id = $request->input('dev_id');
    $sName = $request->input('name');
    $sAge = $request->input('age');
    $sBirth = $request->input('birth');
    $sGender = $request->input('gender');
    $sTel = $request->input('tel');
	
    //DB 쿼리 결과는 성공시 true를 반환한다.
    $result = DB::table('devs')->insert(
      ['dev_id' => $sDev_id, 'name' => $sName, 'age' => $sAge, 'birth' =>$sBirth , 'gender' => $sGender , 'tel' => $sTel]
    );
	
    return response()->json(array('msg'=> $result), 200);
  } 

 

도움이 되셨다면 하트 및 댓글 부탁드립니다♥

반응형

댓글