所以这是我的删除按钮
<button class="btn btn-danger btn-xs btn-delete delete" value="{{$post->id}}">Delete</button>
然后是ajax请求
<script type="text/javascript">
$(document).ready(function(){
$('.delete').click(function(){
var id = $(this).val();
alert(id);
$.ajax({
type: "DELETE",
url: "{{route('delete_post')}}",
data: { id: 1 },
success: function (data) {
console.log(data);
$("#task" + id).remove();
},
error: function (data) {
console.log('Error:', data);
}
});
});
});
</script>
路线
Route::get('delete_post','PostController@getDeletePost');
然后是控制器:
public function getDeletePost($post_id)
{
$post = Post::where('id', $post_id)->first();
$post->delete();
return redirect()->route('dashboard')->with(['message' => 'Successfully deleted!']);
}
所以请帮助我确认为什么当我按下删除按钮时没有真正发生的事情
答案 0 :(得分:1)
您正在Ajax调用中发送DELETE请求类型,这需要一个_method参数,其值为DELETE添加到您的AJAX数据中。你的路线是一条GET路线,这就是你没有看到任何动作的原因
另一个问题是您的刀片语法中引用了命名路由'delete_post',但这是您的URL,而不是路由名称。您尚未根据已发布的内容命名路线
尝试在路由文件中更新此行,并允许请求将其用于控制器方法。
Route::post('delete_post','PostController@getDeletePost')->name('delete_post');
现在您必须将Ajax请求类型更改为
type: "POST"
答案 1 :(得分:1)
我已经修改了你的javascript,你的代码中的第一个问题是,你必须使用get请求或发布请求,第二个问题你没有使用命名路由,为了调用url for ajax,如{{ route() }}
,它应该是{{ url('path') }}
或命名您的路线..
<script type="text/javascript">
$(document).ready(function(){
$('.delete').click(function(){
var id = $(this).val();
alert(id);
$.ajax({
type: "get",
url: "{{ url('/') }}",
data: { id: 1 },
success: function (data) {
console.log(data);
$("#task" + id).remove();
},
error: function (data) {
console.log('Error:', data);
}
});
});
});
</script>