как изменить статус по идентификатору в laravel ajax?

#jquery #ajax #laravel

#jquery #ajax #laravel

Вопрос:

Проблема, с которой я сталкиваюсь, заключается в том, что когда я нажимаю на активную кнопку, вся активная кнопка статьи меняется на неактивную.. я хочу изменить статус идентификатора статьи, который я установил на неактивный, с активного. Все статьи останутся активными или неактивными в соответствии с описанным статусом в базе данных. как я могу это получить? Если я неактивен, кнопка статьи изменится на неактивную для той статьи, на которую нажаты не все статьи, и когда я обновляю страницу, статус всех статей установлен на активный, но в базе данных их статус изменен на неактивный.

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;
}
  

Комментарии:

1. попробуйте function deleteArticle(event,id) и вместо $('.delete-article-btn').html('Inactive'); try var target = event.target || event.srcElement; и target.innerHTML='inactive'

Ответ №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;
}
  

Комментарии:

1. та же проблема, все статьи оказались неактивными .. и после обновления он показывает активный, где его статус изменился в базе данных.

2. {{$article[‘aID’]}} должен ли bhi быть уникальным для каждой статьи

3. это работает, но когда я обновляю статус страницы, измененный на активный, которого нет в базе данных.

4. да, я пытался, но он не работает, даже сейчас его статус не меняется.

5. В вашей модели article в заполняемом массиве должен быть ключ is_deleted

Ответ №2:

Вы меняете HTML-содержимое всех кнопок с классом «.delete-article-btn».

 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');
}
  

Кроме того, на стороне сервера кажется, что вы настраиваете таргетинг на ВСЕ статьи от пользователя,
я думаю, вам нужно получить только ту статью, которую вы хотите отключить или нет.