我收到500 Internal Server Error(500内部服务器错误),但无法确定问题的根源。该请求应该从数据库中删除具有特定ID的注释。使用隐藏的输入传递ID。这是我的代码:
我的表单:
<form method='POST' action=''>
<input type="hidden" name="comment_id" value="{{ $comment->id }}">
{{ csrf_field() }}
{{ method_field('delete') }}
<button class='submit-btn delete-comment' type='submit' name='commentDelete'>X</button>
</form>
<script>
var urlDeleteComment = '{{ route('deleteComment') }}';
</script>
我的路线:
Route::delete('/comment', 'CommentsController@deleteComment')->name('deleteComment');
我的JavaScript:
$('.delete-comment').on('click', function(event) {
event.preventDefault();
var commentId = $("input[name=comment_id]").val();
$.ajax({
method: 'POST',
url: urlDeleteComment,
data: {
commentId: commentId,
_token: token
}
}).done(function(response) {
})
});
我的PHP:
public function deleteComment(Request $request){
$commentId = $request['commentId'];
$comment = Comment::find($commentId);
$comment->delete();
}
在JavaScript中使用console.log(commentId)之后,我获得了数字的ID,因此看来我已经成功获取了它。遗憾的是,我不确定如何解决500 Internal Server Error。我只知道这是服务器端错误,但我不知道这是什么。
任何帮助将不胜感激。谢谢。
我检查了日志并看到此错误:
[2018-12-20 22:12:23]本地。错误:SQLSTATE [23000]:违反完整性约束:1048列'user_id'不能为空(SQL:插入comments
({{1 }},user_id
,image_id
,comment
,updated_at
)值(````,2018-12-20 22:12:23,2018-12-20 22: 12:23)){“ userId”:1,“电子邮件”:“ bojidar_s_k@abv.bg”,“例外”:“ [对象](Illuminate \ Database \ QueryException(代码:23000):SQLSTATE [23000]:完整性约束违反:1048列'user_id'不能为空(SQL:插入created_at
(comments
,user_id
,image_id
,comment
,{{1} })值(,,,,2018-12-20 22:12:23,2018-12-20 22:12:23))在C:\ MAMP \ htdocs \ Art \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Connection.php:664,PDOException(代码:23000):SQLSTATE [23000]:违反完整性约束:1048 C:\ MAMP \ htdocs \ Art \ vendor \ laravel \ framework \ src \中的列'user_id'不能为空Illuminate \ Database \ Connection.php:458)
[stacktrace]
现在奇怪的是,这甚至不是deleteComment()函数的一部分,而是以前称为postComment()的函数的一部分。我决定发布完整的PHP代码:
updated_at
答案 0 :(得分:2)
对于您的删除端点,您的ajax调用应类似于:
$.ajax({
method: 'POST',
url: urlDeleteComment,
data: {
commentId: commentId,
_method: 'DELETE',
_token: token
}
}).done(function(response) {
})
答案 1 :(得分:-1)
尝试使用此代码
<form method='POST' id='delete_comment'>
<input type="hidden" name="comment_id" value="{{ $comment->id }}">
@csrf
<div id="status" style="display: none;"></div>
<button class='submit-btn delete-comment' type='submit' name='commentDelete'>X</button>
</form>
路线:
// POST
Route::post('/comment/delete', 'CommentsController@deleteComment')->name('deleteComment');
JavaScript:
<script type="text/javascript">
$(document).ready(function(){
$('#delete_comment').on('submit', function(event){
event.preventDefault();
// ADD WAIT CSS IF YOU WANT HERE :)
$.ajax({
url:"{{ route('deleteComment') }}",
method:"POST",
data: new FormData(this),
// DATA RETURN JSON
dataType:'JSON',
contentType: false,
cache: false,
processData: false,
success:function(data)
{
// REMOVE YOUR WAIT CSS BEFORE SHOW YOUR SUCCESS MSG
// SHOW SUCCESS OR WARNING MSG
jQuery('#status').toggle('show');
$('#status').addClass(data.status);
$('#status').innerHTML = data.msg;
},
error: function(data) {
console.log(data);
}
});
});
});
</script>
控制器:
<?php
protected function deleteComment(Request $request){
// NOT GIVE ANY ONE TO DELETE YOUR COMMNET
$comment = Comment::find($request->comment_id);
// CHECK IF IS COMMNET IN DATABASE :)
if ($comment) {
$comment->delete();
return response()->json([
'msg' => 'success',
'status' => 'alert alert-success'
]);
}
return response()->json([
'msg' => 'error, not found',
'status' => 'alert alert-danger'
]);
}
?>