Как вставить данные в БД из ajax?

Пытаюсь вставить данные в БД с помощью ajax.
Идея такая - скрипт посылает данные на адрес контроллера, контроллер, получает их из $_POST, вставляет в БД и ничего не возвращает или отображает (как вариант, можно конечно вернуть 1 если успех и т.д. но пусть так).

Вот скрипт, отправляющий данные.

$.ajax({
method: 'POST',
url: "/add/page",
   // data: {pages: pages},
data: {test: 'test'},
}).done(function (data) {
$('body').html(data);
});


Вот контроллер
namespace App\Controller;

use App\Entity\Pages;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\Persistence\ManagerRegistry;

class AddPageController extends AbstractController
{
#[Route('/add/page', name: 'app_add_page')]
public function index(ManagerRegistry $doctrine): Response
{
//  $pages = $_POST['pages'];

/*
$entityManager = $doctrine->getManager();
...... тут стандартный код вставки в БД
*/

return 1; // Желательно return $_POST['pages'] для отладки.
}
}


Ожидаю увидеть в body 1. Но, ничего не происходит. В консоли вижу ошибку 500.

Я вообще всё правильно делаю? В чем тут ошибка?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
myks92
@myks92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
Вы сначала изучите Фреймворк. Сходите в документацию, прежде чем писать такой код. Например, зачем использовать такие конструкции $_POST['pages']; Так же для отладки используется не контроллер, а провайдер. И функции dump. Для симфони, как и для других это всё давно продумано.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
В консоли вижу ошибку 500
Логи ошибок пхп смотрите, ну или включите вывод ошибок и смотрите что пишет сервер в нетворке. Хотя может он и пишет, но вы не смотрели респонс...

PS: возможно возврат функции ожидаемого типа Response не совпадает с return 1;? ну и как костыль можно сделать echo 1; exit; вместо ретурна.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы