10
Апр
2018

Работа с Ajax в Symfony

Дает 302 статус, но состояние базы не меняет, а если просто перехожу по ссылке, /subscribe, то добавляет запись и удаляет.

<?php

namespace WoolfBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use WoolfBundle\Entity\Subscribe;

class SubscribeController extends Controller
{

/**
 * @Security("is_granted('IS_AUTHENTICATED_FULLY')")
 * @Route("/subscribe", name="subscribe")
 * @Method({"POST"})
 */
public function subscribeAction()
{
    $em = $this->getDoctrine()->getManager();
    $repository = $em->getRepository('WoolfBundle:Subscribe');
    $userEmail = $this->getUser()->getEmail();
    $subscribe = $repository->findOneByEmail($userEmail);

    if(!$subscribe){
        $subscribe = new Subscribe();
        $subscribe->setEmail($this->getUser()->getEmail());
        $em->persist($subscribe);
        $em->flush();

        return new JsonResponse(true);
    } else {
        $em->remove($subscribe);
        $em->flush();

        return new JsonResponse(false);
    }
}
}

JS файл

$(document).on('click', 'button.subscribe', function () {
that = $(this);
$.ajax({
  url:"/subscribe",
  type: "POST",
  dataType: "json",
  data: {
    "success": "You are subscribe!"
  },
  async: true,
  success: function (data)
  {
    console.log(data);
    $('div#ajax-results').html(data.success);
  }
});

return false;
});

и сам HTML код

<button class="subscribe">click me!</button>
<div id="ajax-results"></div>

вывод в консль

введите сюда описание изображения

network

Источник: https://ru.stackoverflow.com/questions/812100/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-ajax-%D0%B2-symfony

Тебе может это понравится...

Добавить комментарий