Успешный ajax запрос и заявление - PullRequest
0 голосов
/ 14 апреля 2020

У меня маленькая проблема с ajax в symfony4. Я хочу обработать функцию применения (применить к предложению) с jQuery и Ajax У меня есть эта функция в контроллере.

Процесс выполняется, как и ожидалось, я имею в виду, когда я нажимаю на кнопку (применить ) впервые соответствующее предложение будет храниться с правильными данными. и если это не первый раз, он не будет сохранен (это правильно).

     /**
     * it allows any user to Apply for an offer and create a new applyOffre object in the applyOffre table
     * @Route("candidat/offre/{id}/apply", name="offre_apply")
     * @param OffreEmploi $offre
     * @param EntityManagerInterface $manager
     * @param ApplyOffreRepository $applied
     * @param Request $request
     * @return Response
     */
    public function apply(OffreEmploi $offre, EntityManagerInterface $manager, Request $request, ApplyOffreRepository $applied)
    {
        $user = $this->getUser();
        $apply = new ApplyOffre();
        $appliedOffre = $applied->findAll();
        $exist = false;
        $temps = array();
        $idx = 0;

            if($appliedOffre and !$exist) {
                foreach ($appliedOffre as $applie) {
                    if ($applie->getOffre() ==$offre and $applie->getCandidat() ==$user) {
                        $exist = true;
//                        $this->addFlash('warning', ' you've already applied for this job ');
                    }
                }
            }

        if(!$exist)

        {
            $apply->setOffre($offre)
                ->setCandidat($user);
            $manager->persist($apply);
            $manager->flush();
            $temps[$idx++]=array(
                '$offre'=>$offre,
                '$user'=>$user
            );
           // $this->addFlash('success',' it's done a new apply registered ');

        }

        return new JsonResponse($temps,200);
    }

, но все проблемы связаны с оповещениями. Если задание применяется впервые, появляется предупреждение "Postulé" появится, и если это не предупреждение "Deja postulé" должно появиться. На данный момент у меня есть только предупреждение "postulé", которое появляется, когда предложение применяется во второй раз (даже если метод в контроллере выполняется правильно) , Это Ajax / jQuery, относящийся к этой функции:

  $("a.js-apply").on("click", function(event){
        event.preventDefault();
        var url=this.href;
        var b=this.id;
        $.ajax({
            url: url,
            type: 'POST',
            dataType: 'json',
            async: true,
            success: function (data, status) {

                if (data) {
                    $(this).slideToggle('fast', function () {
                        $('a#' + b).text('Postulé');
                        alert('postulé');
                    });
                }
                else{
                    alert('deja postulé');
                }
                // alert(data);
            },
            error: function (xhr, textStatus, errorThrown) {
                alert('Ajax request failed.');
            }
        });
    });

1 Ответ

0 голосов
/ 14 апреля 2020

Проверьте длину аргумента данных в функции успеха. Тестирование на

if (data)

вернет true, даже если данные представляют собой пустой массив JSON.

Решение состоит в том, чтобы изменить оператор if на

if (data.length > 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...