같은 버튼에 ajax 기능을 추가하려고합니다.Laravel 5에서 아약스 요청시 경로 리디렉션
좋아요 버튼을 클릭하면 json 데이터가있는 페이지로 리디렉션된다는 점을 제외하면 모든 기능이 작동합니다.
나는 e.preventDefault()
을 사용하고 있으며 여전히 나를 리디렉션하고 있습니다.
on('click')
을 사용하는 경우 토큰과 함께 숨겨진 입력을 포함하더라도 콘솔 로그에 TokenMismatch
오류가 표시됩니다.
jquery.min.js : 4 POST http://localhost/socialnet/public/likeStatus 500 (내부 서버 오류)
내가 on('submit')
를 사용하는 경우 데이터가 통과하지만 JSON 응답을 가진 페이지로 리디렉션.
이 내 컨트롤러에 [email protected]()
public function likeStatus() {
if (Input::has('like_status')) {
$status = Input::get('like_status');
$selectedStatus = Status::find($status);
$selectedStatus->likes()->create([
'user_id' => Auth::user()->id,
'status_id' => $status
]);
$response = array(
'status' => 'success',
'msg' => 'You have liked this status',
);
return Response::json($response);
}
}
뷰
{!! Form::open(['action' => '[email protected]', 'id' => 'like_form']) !!}
{!! Form::hidden('like_status', $status->id) !!}
{!! Form::hidden('user_id', Auth::user()->id) !!}
<button type="submit" name="likeStatus" class="btn btn-info btn-xs" id="like-status">
<i class="fa fa-thumbs-up"></i> Like ({{ $likes_count }})
</button>
{!! Form::close() !!}
자바 스크립트
$('#like-status').on('click', function(e){
e.preventDefault();
var status_id = $('input[name=like_status]').val();
var user_id = $('input[name=user_id]').val();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').val()
}
});
$.ajax({
url: 'http://localhost/socialnet/public/likeStatus',
method: 'post',
data: {status_id: status_id, user_id: user_id},
success: function(data) {
console.log(data.msg);
}
});
});
편집 :은 그냥 CSRF가 변수로 토큰 및 추가 추가 그것을에
var status_id = $('input[name=like_status]').val();
var user_id = $('input[name=user_id]').val();
var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
$.ajax({
url: 'http://localhost/socialnet/public/likeStatus',
method: 'post',
data: {status_id: status_id, user_id: user_id, _token: CSRF_TOKEN},
success: function(data) {
console.log(data.msg);
}
});
이 네트워크 탭에서 Status Code: 200
을 제공하지만, 콘솔 undefined
를 제공하고 데이터가 겪고되지 않습니다.
편집 2 : 뭔가 이상한 일이 일어나고 있습니다. 나는 최신 상태를 원할 때 콘솔에 undefined
을 얻습니다. 아무 일도 일어나지 않습니다. 하지만 이전 (이전) 상태를 좋아할 때 작동하지만 좋아하는 버튼을 클릭하면 json 데이터 페이지로 리디렉션되고 데이터가 전달됩니다.
내가 뭘 잘못하고 있니?
으로 바뀝니다. PHP에서 var_dump를 사용해 보셨나요? 뭐 가져 왔니? – Yanaro