[Laravel] ajax 통신하여 컨트롤러에서 값 처리하는 방법
[Laravel] ajax 통신하여 컨트롤러에서 값 처리하는 방법
라라벨에서 ajax통신을 하기 위해서는 csrf-token 값이 필요하다.
ajax통신을 하려는 .blade.php 파일 내에 아래 문장을 선언해준다.
TYPE이 POST일 경우에는 ajax 내 dataType을 선언해주고, GET일 경우에는 선언 해주지 않아야함!
$.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에서 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); }
from http://wondongho.tistory.com/138 by ccl(A) rewrite - 2020-03-06 07:54:47
댓글
댓글 쓰기