PHP: Из ajax элементы не удаляются при нажатии на флажок все удалить

#php #ajax #laravel

Вопрос:

Я пытаюсь удалить все элементы, когда я устанавливаю флажок «Затем выбрать все», но он удаляет один элемент.

Вот код, в котором я получаю идентификаторы всех элементов при нажатии на флажок

     $delete_vehicle_trim =Item::find($request->deletetrimid);

        if ($delete_vehicle_trim != null) {
            $delete_vehicle_trim->delete();
            return response()->json(['msg'=>'Record Delete Successfully']);
        }

        else {
            return response()->json(['msg'=>'Error In Delete']);
        }
 

при вызове ajax trim = [] я получаю кратный идентификатор в этом массиве

 function viewtrim(id){

    $('#select-all').click(function(event) {   
         var trim = [];
            $.each($("input[name='checkbox']:checked"), function(){            
                trim.push($(this).val());
              
            });
            alert("Id is: "   trim.join(", "));
      
        $('#select-all').on('click', function(e) {
            var allVals = [];  
            $("checkbox:checked").each(function() {  
                id.push($(this).attr('data-id'));
            });  
        });
       
        $.ajax({
            url : 'viewtrim/'  viewtrimid,
            type : 'GET',
            data : {
                "_token": "{{ csrf_token() }}",
                'viewtrimid': viewtrimid,
                "_method": 'GET',
            },
            
            }
        });
     
    }

    console.log($("input[name=checkbox]").val());
 

Какая-нибудь помощь?

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

1. Почему вы добавляете другой обработчик щелчка в тот же элемент внутри обработчика щелчка, который у вас уже есть на нем? В этом нет особого смысла. (Кроме того, если вы устанавливаете флажки с :checked помощью , как это вообще «все» из них?) И вам, вероятно, нужен другой метод на стороне сервера, чем Item::find (я сомневаюсь, что он может обрабатывать разделенный запятыми список идентификаторов в качестве параметра?), А затем перебирать найденные элементы, чтобы удалить их

2. Покажите свой контроллер.

3. В JS есть некоторые проблемы: 1) один обработчик событий добавлен внутри другого, оба делают одно и то же? Один из них должен быть удален. 2) Когда срабатывает AJAX , он пытается использовать viewtrimid , который не был установлен. Отдельно, просто догадываюсь, но должно name='checkbox' ли быть на самом деле type='checkbox' ? Кроме того, вам не нужно указывать _method для GET или POST, удалите это. Наконец, вы должны удалять вещи, используя сообщение, а не GET (и это использует ваш CSRF, который не используется в GET).