我在数据库上创建了当前值的按钮,当按钮被单击时,该值必须在视图上自动更新。当前,该值已在数据库上成功更新,但未在视图上自动更新。
这是我的jquery代码:<script type="text/javascript">
$(document).ready(function(){
$('#like').on('click', function(e){
var id = '{{$news->id}}';
$.get('{{ url('view/like')}}/'+id, function(data){
console.log(id);
console.log(data);
$('#like_data').empty();
$.each(data, function(index, element){
$('#like_data').append("<p>"+this.like+"</p>");
});
});
});
});
</script>
这是我的控制器:
public function like($id){
$news = News::find($id);
$news->like += 1;
$news->save();
return $news;
}
您需要从控制器传递JSON
响应。这样的
public function like($id){
$news = News::find($id);
$news->like += 1;
$news->save();
return response()->json([$news], 200);
}
您不需要为这个响应使用$.each()
,因为您只发送单个对象响应。只需编写以下代码:
$('#like_data').html("<p>"+data.like+"</p>");
如果你想使用each
,只需写:
$.each(data, function (index, element) {
$("#like_data").append("<p>" + element.like + "</p>");
});
试试这个
<script type="text/javascript">
$(document).ready(function(){
$('#like').on('click', function(e){
var id = '{{$news->id}}';
$.get('{{ url('view/like')}}/'+id, function(data){
console.log(id);
console.log(data);
$('#like_data').empty();
$.each(data, function (index, element) {
$("#like_data").append("<p>" + element.like + "</p>");
});
});
});
});
</script>