Как получить ответ на запрос через AJAX, если обработчик на этой же странице?

Доброго времени суток!

Использую этот PHP-роутер. Он основан Laravel роутере.

Вот так отправляю AJAX:
$('.buy-one-click-form').submit(function(e) {
        e.preventDefault();
        let form = $(this);
        $.ajax({
            url: window.location.pathname,
            method: 'post',
            dataType: 'html',
            data: form.serialize(),
            headers: {
                'X-CSRF-Token': $('input[name="csrf_token"]').val()
            },
            success: function(data) {;
                console.log('Отправлено');
            },
            error:  function(){
                console.log('Ошибка отправки формы');
            }
        });
    });


В контроллере, формируются все данные и подключается класс View, который рендерит HTML.
В этом же контроллере проверяю наличие кнопки в $_POST:
if (isset($_POST['buy_one_click'])) {
    echo 'Форма отправлена';
}


Вот только не могу понять, как получить то, что выводит echo в блоке success, чтобы отобразить на странице? В данном варианте подгружается сразу весь HTML страницы.

Есть мысль сделать маршрут /ajax с отдельным контроллером и там писать функции, которые будут возвращать данные через return, но не знаю, правильно ли так будет.

Заранее спасибо!
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Простой вариант, если используется лара:
php:
if($request->ajax()){ //или $_SERVER['REQUEST_METHOD'] == "POST" если не лара
  //возвращаем нужные данные в json или как удобно
  exit();
}

js:
...
success: function(data) {
                console.log(data);// в дата лежит ответ сервера
            },
...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы