【问题标题】:how to change status against id in laravel ajax?如何在 laravel ajax 中更改针对 id 的状态?
【发布时间】:2019-08-17 22:58:52
【问题描述】:

我面临的问题是,当我单击活动按钮时,所有文章的活动按钮都变为非活动状态。我想将我设置为非活动状态的文章 ID 的状态从活动状态更改为非活动状态。所有文章都将保持活动或非活动状态,如数据库中所述状态。我怎样才能得到这个? 如果我不活动的文章按钮更改为该文章的不活动,点击不是所有文章,当我刷新页面时,所有文章状态设置为活动但在数据库中它们的状态更改为不活动。

HTML:

  <button class="btn btn-sm btn-danger delete-article-btn"                                                   
    onclick="deleteArticle({{$article['aID']}})">Active
   </button>

脚本:

<script>
    function deleteArticle(id) {

        $.ajax({
            url: '{!! URL('/pay/dash/panel/delete_article') !!}',
            type: 'post',
            dataType: 'json',
            data: {'user_id': id},
            success: function (response) {
                console.log(response);
                console.log('Article ID',id);

                if (response == 1) {
                    $('.delete-article-btn').html('Inactive');
                } else {
                    $('.delete-article-btn').html('Active');
                }
            }, error: function (error) {

            }
        });
    }
</script>

控制器:

 public function deleteArticles(Request $request)
{
    $userId = $request->input('user_id');
    $result = 0;

    $checkArticle = Article::where('id', $userId)->where('is_deleted',0)->get();

    if (count($checkArticle)>0) {
        Article::where('id', $userId)->update(['is_deleted' => 1]);
        $result = 1;
    } else {
        Article::where('id', $userId)->update(['is_deleted' => 0]);
        $result = 0;
    }

    return $result;
}

【问题讨论】:

  • 试试function deleteArticle(event,id),而不是$('.delete-article-btn').html('Inactive');,试试var target = event.target || event.srcElement;target.innerHTML='inactive'

标签: jquery ajax laravel


【解决方案1】:
 <button class="btn btn-sm btn-danger delete-article-btn mybtn-{{$article['aID']}}"                                                   
    rel="{{ $article['aID'] }}" rel2="1">Active
   </button>
<script>
    $(document).on('click','.delete-article-btn',function(){
         var id = $(this).attr('rel');
         var status = $(this).attr('rel2');
         $.ajax({
            url: '{!! URL('/pay/dash/panel/delete_article') !!}',
            type: 'post',
            dataType: 'json',
            data: {'user_id': id,'status':status},
            success: function (response) {
                console.log(response);
                console.log('Article ID',id);

                if (response == 1) {
                    $('.mybtn-'+id).html('Inactive');
                    $('.mybtn-'+id).attr('rel2',0);
                } else {
                    $('.mybtn-'+id).html('Active');
                    $('.mybtn-'+id).attr('rel2',1);
                }
            }, error: function (error) {

            }
        });
    })

</script>
public function deleteArticles(Request $request)
{
    $userId = $request->input('user_id');
    $status = $request->input('status');

    $result = 0;
    if ($status==0) {
        Article::where('id', $userId)->update(['is_deleted' => 1]);
        $result = 1;
    } else {
        Article::where('id', $userId)->update(['is_deleted' => 0]);
        $result = 0;
    }

    return $result;
}

【讨论】:

  • 同样的问题,所有文章都可能处于非活动状态。刷新后,它在数据库中的状态发生变化时显示为活动状态。
  • {{$article['aID']}} 对于每篇文章都应该是唯一的
  • 它工作但当我刷新页面状态更改为活动不在数据库中。
  • 是的,我试过了,但即使现在它也没有工作,它没有改变状态。
  • 在您的文章模型中,可填充数组中应该有 is_deleted 键
【解决方案2】:

您正在使用“.delete-article-btn”类更改所有按钮的 html 内容

if (response == 1) {
   $('.delete-article-btn').html('Inactive');
} else {
   $('.delete-article-btn').html('Active');
}

您必须根据自己的喜好使用数据属性指定要更新的按钮..

if (response == 1) {
   $('.delete-article-btn[data-id=X]').html('Inactive');
} else {
   $('.delete-article-btn[data-id=X]').html('Active');
}

此外,在服务器端,您似乎正在针对用户的所有文章, 我认为您只需要获取要禁用或不禁用的文章。

【讨论】:

    猜你喜欢
    • 2020-02-24
    • 2020-10-11
    • 2016-01-26
    • 1970-01-01
    • 2020-03-21
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多