반응형
라라벨에서 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에서 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);
}
도움이 되셨다면 하트 및 댓글 부탁드립니다♥
반응형
'Framework > Laravel Framework' 카테고리의 다른 글
[Laravel] json return시 한글 깨지는 현상 (0) | 2020.01.07 |
---|---|
[Laravel] Controller Subfolder routing 방법 (0) | 2020.01.07 |
[Laravel] xampp 설정으로 port별 접속 가능하게 하기 (0) | 2019.07.01 |
[Laravel] Ajax 사용하기 (0) | 2019.05.22 |
[Laravel] DB, ORM,Migration (0) | 2019.04.11 |
댓글