Jump to content
Sign in to follow this  
mbrogan

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

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 запрос в контроллер, из контроллера забрать новый массив и обновить блок с новыми данными без перезагрузки страницы ?

 

Спасибо

Share this post


Link to post
Share on other sites
success: function(data) {
    console.log(data);
}

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

Share this post


Link to post
Share on other sites
12 минут назад, kJlukOo сказал:

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

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

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

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

Share this post


Link to post
Share on other sites
22 минуты назад, mbrogan сказал:

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

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

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

 

  • +1 1

Share this post


Link to post
Share on other sites
2 часа назад, kJlukOo сказал:

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

 

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

Share this post


Link to post
Share on other sites

естественно

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

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

Share this post


Link to post
Share on other sites
1 час назад, AlexDW сказал:

естественно

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

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

 

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

Share this post


Link to post
Share on other sites

учить js/jquery

ваш кэп :)

Share this post


Link to post
Share on other sites
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);

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.