Функция Ajax допускает ошибку :Вызов функции-члена setPosition() при нулевом значении

#jquery #ajax #symfony #drag-and-drop

Вопрос:

Я использую Symfony, и я сделал перетаскивание с помощью jquery, а затем выполнил функцию в ajax, чтобы сохранить и отправить изменения в мою базу данных. Однако после первой модификации я получаю фатальную ошибку: «Вызов функции-члена setPosition () на null». Даже несмотря на то, что изменения применяются. Со второй модификацией ошибки нет. Кто-нибудь знает, почему?

Спасибо

Это функция в моем контроллере:

 /**  
    * 
    * @param Request $request
    * @return JsonResponse $data
    * @Route("/ajax_position_carousel", name="ajax_position_carousel")
    */
    public function ajax_position_carousel(Request $request, VitrineAccueilRepository $repoVitrineAccueil, EntityManagerInterface $manager)
    {
  

        $arrayPositions = $request->request->get('positions');

   

        foreach($arrayPositions as $position)
        {
                
                $carousel = $repoVitrineAccueil->find($position[0]);

                $carousel->setPosition($position[1]);
                $manager->persist($carousel);
                $manager->flush();

        }
 
        $data = true;
        // $data = $this->jsonStock($stockTab);
        return new Response($data);
     
    }
 

и сценарий:

 
<script type="text/javascript"> 
    $(document).ready(function() {
        $('table tbody').sortable({
            update: function (event, ui){
               $(this).children().each(function (index) {
                   if ($(this).attr('data-position') != (index 1)) {
                       $(this).attr('data-position', (index 1)).addClass('updated');
                   }
               });
               saveNewPositions();
            }
        });
    });

    function saveNewPositions() {
        var positions =[];
        $('.updated').each(function (){
            positions.push([$(this).attr('data-index'), $(this).attr('data-position')]);
            $(this).removeClass('updated');
           
        });
        console.log(positions);
        var url = "{{ path('ajax_position_carousel') }}";
        var data = {
            "positions" : positions
        };
        console.log(data);
          $.ajax({
            method: 'post',
            dataType: 'json',
            url: url,
            data: data,
            
            
            success: function (response) {

            var $retour = response;
            console.log($retour);



            },
            error: function () {
            alert("erreur");
            }
            
        })  
    }
</script>