Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

Пытаюсь сделать ajax подгрузку товаров с фильтром. Проблема вот в чем. Сделал маленький скрипт, для теста и когда его выполняю, происходит такая штука. Отправляю запрос:

Request URL: http://localhost:3000/index.php?route=product/category&path=59&sort=p.price&order=ASC&price_min=12000&price_max=15000&page=2&is_ajax=1
Request Method: GET
Status Code: 301 Moved Permanently (from disk cache)

И в итоге идет перенаправление на http://localhost:3000/stoly?page=2 и при этом теряются все переданные параметры, кроме page. Подскажите, можно ли побороть и как?

Надіслати
Поділитися на інших сайтах


переменная is_ajax лишняя, в коде контроллера

if(!empty($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{    
// ajax
  exit;    
}
// не ajax


 

  • +1 1
Надіслати
Поділитися на інших сайтах


2 minutes ago, Muvka said:

Обычный котроллер категории, только с добавлением строк для фильтрации по цене.

ну так и не будет работать, контроллер должен выдавать данные для ajax запроса, а не страницу. потом в javascript данные уже догружаешь к концу данных

Надіслати
Поділитися на інших сайтах


Ну вообщето нормально подгружает. Но берет только один параметр - page, остальные исчезают. Мне нужно понять, почему и как сделать, чтобы не пропадали. Писать новый контроллер и плодить одинаковый код не хочется.

Змінено користувачем Muvka
Надіслати
Поділитися на інших сайтах


Вроде разобрался. В catalog/controller/startup/seo_url.php

if (isset($this->request->get['page'])) $arg = $arg . '?page=' . (int)$this->request->get['page'];

в ветке product/category заменил на 

if (isset($this->request->get['is_ajax'])) {
    $arg = $arg . '?is_ajax=' . (int)$this->request->get['is_ajax'];
    if (isset($this->request->get['sort'])) $arg = $arg . '&sort=' . $this->request->get['sort'];
    if (isset($this->request->get['order'])) $arg = $arg . '&order=' . $this->request->get['order'];
    if (isset($this->request->get['price_min'])) $arg = $arg . '&price_min=' . (int)$this->request->get['price_min'];
    if (isset($this->request->get['price_max'])) $arg = $arg . '&price_max=' . (int)$this->request->get['price_max'];
    if (isset($this->request->get['page'])) $arg = $arg . '&page=' . (int)$this->request->get['page'];
} else {
    if (isset($this->request->get['page'])) $arg = $arg . '?page=' . (int)$this->request->get['page'];
}

Теперь нормально срабатывает.

Змінено користувачем Muvka
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.