我目前正在尝试使我的点赞功能使用 AJAX 请求,以便每当用户点赞图像时页面就不会刷新,但是,每当我单击div 应该触发 AJAX 请求。
遗憾的是,我不知道如何解决 500 内部服务器错误。
这是用户喜欢图像的 View 中的相关代码:
<div class="submit-btn like" id='{{ $image->id }}'>Like</div>
<script>
var token = '{{ Session::token() }}';
var urlLike = '{{ route('likeArtwork') }}'
</script>
这是我的 JavaScript:
$('.like').on('click', function(event) {
var imageId = event.target.id;
$.ajax({
method: 'POST',
url: urlLike,
data: {
imageId: imageId,
_token: token
}
}).done(function(response) {
});
});
我的发帖路线:
Route::post('/artwork/like', 'LikeController@likeArtwork')->name('likeArtwork');
最后是我的 likeArtwork() 函数:
public function likeArtwork(){
$id = $request['imageId'];
$user = Auth::user();
$liked = Like::where('user_id', $user->id)->where('image_id', $id)->first();
if ($liked) {
$liked->delete();
} else {
$like = new Like();
$like->image_id = $id;
$like->user_id = $user->id;
$like->save();
}
return redirect()->back();
}
最佳答案
public function likeArtwork(Request $request){
$id = $request->input('imageId');
$user = Auth::user();
$liked = Like::where('user_id', $user->id)->where('image_id', $id)->first();
if ($liked) {
$liked->delete();
} else {
$like = new Like();
$like->image_id = $id;
$like->user_id = $user->id;
$like->save();
}
echo "success";
//return redirect()->back(); you don't want to send another request
}
您可能需要检查 image_id 是否存在,然后使用 attach()
和 detach()
methods 。例如。 Image::find($id)->likes()->attach(...)
。
关于javascript - 尝试使用 Ajax 实现类似功能后出现内部服务器错误 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53806494/