Symfony 3. Отправка данных в контроллер через ajax и получение ответа

203
02 февраля 2018, 23:02

Здравствуйте. Проблема в следующем. Есть две переменные blog_first_post_id = 7 и blog_last_post_id = 12 которые при помощи ajax передаются в функцию.

$.ajax({
        url: ajax_action_url,
        type: "POST",
        cache: true,
        async: true,
        contentType: "application/json; charset=utf-8",
        data: {
            "first_post_id": blog_first_post_id,
            "last_post_id": blog_last_post_id
        },
        dataType: "json",
        beforeSend: function () {
            $('#progress-top').show();
        },
        success: function (response) {
            elegant_alert.success(response);
        },
        complete: function () {
            $('#progress-top').hide();
        },
        error: function () {
        }
    });

Функция в контроллере эти переменные успешно принимает. И дальше мне нужно получить контент из БД, и вернуть в ответе json с контентом.

public function ajaxAction (Request $request) {
    $response = new Response();
    $response->headers->set('Content-Type', 'application/json');
    if ($request->request->get('first_post_id')) {
        $first_post_id = $request->request->get('first_post_id');
    }
    if ($request->request->get('last_post_id')) {
        $last_post_id = $request->request->get('last_post_id');
    }
    // функция getBlogContent получает данные постов из БД 
    $blog_content = $this->getBlogContent($first_post_id, $last_post_id);
    // тут в ajax должна возвращаться переменная $blog_content в формате json, но как это сделать, я не знаю
}

Далее этот контент выводить на странице сайта, но это уже другой вопрос. Как сделать ответ, чтоб он был принят через ajax в переменную JS я не знаю, потому прошу у вас помощи.

Answer 1

Используй JsonResponse и не ставь заголовки вручную

use Symfony\Component\HttpFoundation\JsonResponse;
// ...
return new JsonResponse($blog_content);
READ ALSO
mysql корректировать запроса

mysql корректировать запроса

Здравствуйте, пытаюсь обновить поле, запросом - UPDATE users SET status = {$status} WHERE id = {$id}

138
Кастомизация фильтра в Sonata Admin

Кастомизация фильтра в Sonata Admin

Имеется фильтр в админке сайта, какие атрибуты нужно использовать для изменения лейблов на значения из словаря?

172
Как получить значение поля у которого другие значения равны условию?

Как получить значение поля у которого другие значения равны условию?

Мне нужно получить id папки, у которой все статусы файлов равны 3

151
const = BASE_PATH.'/folder' не работает на сервере

const = BASE_PATH.'/folder' не работает на сервере

ЗдравствуйтеМой код такой:

203