С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: Laravel
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 21.11.2018
Сообщений: 30

Перенаправление Ajax + Laravel

07.12.2019, 01:11. Показов 3798. Ответов 8

Студворк — интернет-сервис помощи студентам
С Laravel знаком не так давно, подскажите, кто знает! Ситуация следующая: Аяксом отправляю данные формы на контроллер CheckController, данные приходят, делается запрос в таблицу, далее условие - если пусто, вернет 0 ну и ajax сгенерирует вывод сообщения, НО если данные есть в массиве то вопрос - как перейти (загрузить) нужный вид? Простой return view(...) соответственно, отправляет только html сущность. Всё происходит на главной странице, поэтому не хотелось бы ломать вёрстку, а загрузить всё на отдельный вид - check

форма которая отправляет в ajax данные
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form action="" method="post" class="p-relative check__form">
                <i class="fa fa-cog fa-spin fa-3x fa-fw check__spin"></i>
                <div class="check__info"></div>
                <div class="check__overlay p-3">
                    <div class="input-group mb-3">
                      <select class="custom-select border-0" name="brand" id="brand">
                        <option selected disabled>Марка</option>
                        @forelse($partners as $brand)
                        <option value="{{ $brand->name }}">{{ $brand->name }}</option>
                        @empty
                            Всё занято
                        @endforelse
                      </select>
                      <select class="custom-select border-0" name="models" id="models">
                        <option selected disabled>Модель</option>
                      </select>
                      {{ @csrf_field() }}
                        <div class="input-group-append">
                            <input class="btn btn-outline-secondary site-button" type="submit" value="Проверить наличие">
                        </div>
                  </div>
                </div>
            </form>
JS код с Ajax
думал может через location загрузить, ни знаю как вместе с ним данные отправить
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$('.check__form').on('submit', function(e) {
        e.preventDefault();
        let path = location.href,
            newPath = path+'check';
        // console.log(newPath);
        $.ajax({
            url: '/check',  // CheckController
            type: 'POST',   
            data: $('form').serialize(),    // отправляемые данные
            success: function(res) {
                // console.log(res);
                if (res == 0) {
                    $('.check__info').text('Данные модели заняты').hide(5000);
                } else {
                    return location.replace(newPath);
                }
            },
            // complete: function() {
            //  $('.check__info').text('').show();
            // },
            error: function() {
                alert('Ошибка!!!');
            }
        });
    });
CheckController,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public function execute(Request $request)
    {
        $data = $request->except('_token');
        $brand = $request->brand;
 
        if (!isset($data['models'])) {
            $models = Auto::distinct()->select('models')->where('brand', $brand)->get();
            $block = '';
            foreach ($models as $model) {
            $block .= <<<EOD
                <option value="{$model->models}">{$model->models}</option>
EOD;
            }
 
            echo $block;
            die;
        } else {
            $menu = DB::table('menus')->get();
            $autos = Auto::select('id', 'models', 'classes', 'brand', 'desc', 'engine', 'speed', 'price', 'colors', 'img')
            ->where([
                ['brand', $data['brand']],
                ['models', $data['models']],
                ['status', 'free']
            ])->get()->toArray();
 
            if (!empty($autos)) {
                return view('check', ['menu' => $menu, 'autos' => $autos]);
                // return redirect('/check');
            } else {
                echo 0;
                die;
            }
        }
 
    }
Подскажите, кто знает!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.12.2019, 01:11
Ответы с готовыми решениями:

Ajax запрос на нескольких адресах Laravel
Доброго времени суток. Имеется js с ajax кодом $('#btntr').click(function(){ $.ajax({ type:&quot;POST&quot;, ...

Laravel Ajax запросы не работают, выдает ошибку 500
Доброго времени суток! Проблема в том, что ajax запрос в консоли браузера выдает вот что: &quot;Ошибка: Failed to load resource: the...

Перенаправление на ajax url
Здравствуйте. В общем хочу использовать примерно похожий на этот - метод. path = window.location.search; // ?page=portfolio ...

8
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
07.12.2019, 08:48
С аякса нужно вернуть ID сущности и потом на клиенте делаешь редирект на нужную страницу с видом. По URL передаешь ID сущности и потом подгружаешь ее вместе с страницей.

Всякие echo, die в ларавел не нужны, а html отправлять вообще плохая практика. Используйте response()->json()
1
0 / 0 / 0
Регистрация: 21.11.2018
Сообщений: 30
07.12.2019, 09:11  [ТС]
По URL передаешь ID сущности - то есть, хотите сказать, передать GET - ом, а потом в JS редирект спомощью location ? правильно понял?
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
07.12.2019, 09:26
Да.
А можно без ajax сделать, тогда можно будет сразу делать return view()... меньше запросов.
0
0 / 0 / 0
Регистрация: 21.11.2018
Сообщений: 30
07.12.2019, 10:29  [ТС]
а как мне без ajax проверить - есть ли данные и если нет, вывести сообщение? Было бы еще лучше. И да, если данные есть то сразу в вид
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
07.12.2019, 10:39
В смысле как? Точно также. Для сервера нет разницы ajax это или не ajax.
0
0 / 0 / 0
Регистрация: 21.11.2018
Сообщений: 30
07.12.2019, 10:45  [ТС]
Цитата Сообщение от tarasalk Посмотреть сообщение
ajax это или не ajax
это я понимаю, но если без ajax отправляю данные к контролеру Check Controller, он запрос к таблице и если вернет пустой массив, как мне на той же странице, без перезагрузки вывести сообщение, что данных нет?
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
07.12.2019, 11:10
Без перезагрузки это AJAX. Но тогда будет лишний запрос при редиректе на другую страницу.
А если хотите совсем по феншую, чтобы без перезагрузок и лишних запросов, то нужно делать SPA. На vue.js + laravel это довольно легко делается.
0
0 / 0 / 0
Регистрация: 21.11.2018
Сообщений: 30
07.12.2019, 15:14  [ТС]
За response()->json() спасибо, решил сделать немного по другому, но возникла еще загвоздка через response()->json() отсылаю массив в JS, там перебор и вставляю блок в html
JavaScript
1
2
3
4
5
let block = '';
$.each(resJson, function(arr, data) {
    $.each(data, function(key, val) {
        block += '<option value="' + val.models + '" data-class="' + val.classes + '" >' + val.models + '</option>';});
});
Всё вставляется, замечательно, когда выбираю option, отслеживается событие change
JavaScript
1
2
3
4
$('.check__form').on('change', '#models', function() {
    var autoClass = $(this).data('class');
    console.log(autoClass);
})
И скрипт выдает undefined вместо значения data атрибута, если другой поставить для проверки - .val() например, вместо .data('class'), то возвращает что нужно, а .data('class') undefined, И через attr() тоже пробывал - такая же история. В чём может быть дело?

Добавлено через 22 минуты
Хотя всё, уже разобрался ) Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2019, 15:14
Помогаю со студенческими работами здесь

Jsoup & js ajax получение данных из бд ajax (или как-то так :)
Привет! Есть сайт с видео, на нем мне нужная страница с информацией. Парсил с помощью Jsoup, в принципе и до сих пор ней пользуюсь, но с...

Определить AJAX библиотеку или отследить AJAX запрос любым методом
Требуется определить какая библиотека используется на сайте для создания AJAX запросов. Стандратный запрос типа windows.jquery.active не...

После вставки ответа ajax в input запроса, ответ ajax не изменяется
Здравствуйте! В общем так, есть поле input, есть таблица с полем count. Задача: изменить содержимое поле count по средством ajax, но при...

Выполнение AJAX для подгруженных AJAX-зависимых ссылок
Форма авторизации/регистрации. &lt;form class=&quot;authForm&quot; method=&quot;post&quot;&gt; &lt;input name=&quot;login&quot; type=&quot;text&quot;...

Ajax загрузка формы из загруженного через ajax блока
Вообщем, через ajax в блок подгружается форма, из нее нужно загрузить в этот же блок др.контент. $('#form').submit(function(e){ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru