我刚刚开始学习Laravel 5.5来探索更多"高级"框架。我曾经使用Codeigniter而且很喜欢它。现在我正在实现一个小的CRUD功能,它工作正常。现在我正在尝试使用Jquery AJAX,因此它不必刷新。我之前使用过Jigery AJax上的codeigniter项目。现在,当我使用Laravel进行尝试时,它确实无法正常工作。我检查了很多参考文献,但我不确定为什么它没有成功。 我正在尝试将它实现到删除功能,如果我有这个功能,我确定我可以完成剩下的工作。
问题:
return response ()->json ($post);
但是项目删除了。 我希望如何
控制器
public function destroy($id)
{
$post = Post::find($id);
if (auth()->user()->id !== $post->user_id){
return redirect ('/posts')->with('error', 'Unauthorized page');
}
$post->delete();
return response ()->json ($post);
}
路线
Route::resource('posts','PostsController');
查看
{!!Form::open(['action'=>['PostsController@destroy', $post->id], 'method'=>'POST', 'class'=>''])!!}
{{Form::hidden('_method', 'DELETE')}}
{{Form::button('Delete', ['type' => 'submit', 'class' => 'btn btn-danger delete','id' => 'delete', 'data-id' => $post->id ] )}}
{!!Form::close()!!}
JS
<script type="text/javascript">
$(document).ready(function(){
$(".delete").on('click',function(event){
var id = $(this).attr('data-id');
alert(id);
$.ajax({
url: "posts/"+id,
type: "DELETE",
success: function(){
alert("DELETED");
}
});
});
});
</script>
非常感谢你的朋友!
答案 0 :(得分:0)
问题是你在开始你的REST
电话之前提交表格,所以你的休息电话永远不会下车,但页面重新加载,因为表格已经提交,然后你显示你的json从您的控制器返回。
<强>解决方案强>
在刀片视图中删除Form
。然后更新ajax:
$(document).ready(function() {
var id = {!! $post->id !!};
$.ajax({
url: "posts/"+id,
type: "DELETE",
contentType: 'application/json',
success: function(data) {
console.log(data);
alert("DELETED");
}
});
});