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

Get запрос с помощью Ajax


mbrogan

Recommended Posts

Здравствуйте. Не уверен, что написал в правильный раздел, прошу прощения.

 

Встала задача доработать кастомный фильтр, чтобы при изменении одного select'a обновлялся другой select. У нас есть выпадающий список с брендами и выпадающий список с моделями, нужно, чтобы при выборе бренда менялся список с моделями, которые фильтруются по бренду запросом в базу. Но у меня не получается обновить массив с отфильтрованными моделями в tpl файле. 

 

Вот такой ajax код у меня есть. 

 

$('.filterData').change(function() {   //AJAX для передачи методом GET
        $.ajax({

            method: 'GET',
            url: 'index.php?route=extension/module/filter_data/ajaxats&brend=333',
            
            success: function() {
   // alert("success");
    $(".filterData").html(html);
  },
  error: function() {
    alert("error");        
  }
            
        }).done(function(data, Status){
            
        });


  });

вместо '333' мы вставляем id выбранного бренда. 

 

 

Функция возвращает Success, но массив с моделями не меняется

 

В контроллере создал функцию, внутри которой есть:

 

 if (isset($this->request->get['brend'])) {
        $brend = $this->request->get['brend'];

  //  ...

}

И

 $this->response->setOutput(json_encode($data));

Возможно, я не совсем понимаю правила работы ajax, подскажите, пожалуйста, можно ли из tpl отправить get запрос в контроллер, из контроллера забрать новый массив и обновить блок с новыми данными без перезагрузки страницы ?

 

Спасибо

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

12 минут назад, kJlukOo сказал:

success: function(data) {
    console.log(data);
}

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

В консоле пусто.

Вы имеете в виду json_decode при обработке в контроллере?

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

22 минуты назад, mbrogan сказал:

В консоле пусто.

Вы имеете в виду json_decode при обработке в контроллере?

    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($json));

 

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

2 часа назад, kJlukOo сказал:

    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($json));

 

Спасибо, помогли) Результат вижу в консоле, все ок, но блок все еще отображается со старыми данными

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

естественно

в зависимости от полученных по ajax данных - потом нужно менять элементы на странице, чтобы отобразить изменения

"ручками" или путем ее перезагрузки

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

1 час назад, AlexDW сказал:

естественно

в зависимости от полученных по ajax данных - потом нужно менять элементы на странице, чтобы отобразить изменения

"ручками" или путем ее перезагрузки

 

Вот мне и интересно, как это сделать, чтобы не обновлять всю страницу, а только один блок. 

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

1 час назад, AlexDW сказал:

учить js/jquery

ваш кэп :)

 

Спасибо, кэп) 

 

Я сделал обработку массива json в tpl, и записал вместе с html в переменную, которую вывел за место старого блока

 

html='<select name="filter[]" class="form-control filterData" data-filter_group="3"><option value="">Модель</option>';


for (var keyz in data['filterGroup'][3]) {
   console.log(data['filterGroup'][3][keyz]['name'],data['filterGroup'][3][keyz]['filter_id']);
   html+='<option value="'+data['filterGroup'][3][keyz]['filter_id']+'">'+data['filterGroup'][3][keyz]['name']+'</option>';

}

html+='</select>';

$('#msdrpdd21_msdd').html(html);

Подойдет как вариант или слишком "топорно" ?

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

Еще хотел спросить: у меня не цепляется событие change за id блока. Этот id блока генерируется с помощью плагина msdropdown(такая штука, чтобы внешний вид dropdown можно было менять). Вопрос 1: это из за плагина ? Вопрос 2: как заставить ? :-) 

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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