Ajax-фильтр OpenCart для продуктов

#javascript #php #ajax #opencart2.x

#JavaScript #php #ajax #opencart2.x

Вопрос:

Фильтр содержал кнопку Уточнить поиск, и страница загружала продукт в соответствии с поиском.Но я хочу, чтобы при установке флажка отображался продукт.Это может быть достигнуто с помощью ajax..

Оригинальный скрипт фильтра продуктов OpenCart 2.1.0.2

 `<script type="text/javascript"><!--
$('#button-filter').on('click', function() {
    filter = [];

    $('input[name^='filter']:checked').each(function(element) {
        filter.push(this.value);
    });

    location = '<?php echo $action; ?>amp;filter='   filter.join(',');
});
//--></script> 
`
 

И я попытался использовать ajax

 `$(document).on('change','.sort_rang',function(){
    filter = [];

    $('input[name^='filter']:checked').each(function(element) {
        filter.push(this.value);
    });
   location = '<?php echo $action; ?>amp;filter='   filter.join(',');

   $.ajax({
     type: "POST",
     location: location,
     success: function(data)
     {                  
        $('.products-block').html(data);
     }               
   });
   console.log;
  return false;
});`
 

Я получаю желаемый результат.Но он загружает всю страницу. И как я могу использовать любой загрузчик, если это возможно.

Комментарии:

1. удалить строку location

2. Путем удаления местоположения . Часть Ajax не работает

3. или скажем var location =

Ответ №1:

location является глобальным и изменяет URL-адрес браузера. Чтобы избежать использования глобального location , вам необходимо определить location с помощью var

 $(document).on('change','.sort_rang',function(){
    filter = [];

    $('input[name^='filter']:checked').each(function(element) {
        filter.push(this.value);
    });
   var location = '<?php echo $action; ?>amp;filter='   filter.join(',');

   $.ajax({
     type: "POST",
     location: location,
     success: function(data)
     {                  
        $('.products-block').html(data);
     }               
   });
   console.log;
  return false;
});
 

Ответ №2:

Это было просто небольшое изменение в коде.В успешной функции я удалил конкретный идентификатор, и он работает нормально

    <script type="text/javascript">
$(document).on('change','.sort_rang',function(){
    filter = [];

    $('input[name^='filter']:checked').each(function(element) {
        filter.push(this.value);
    });
   location = '<?php echo $action; ?>amp;filter='   filter.join(',');

   $.ajax({
     type: "POST",
     location: location,
     success: function(data)
     {                  
        html(data);
     }               
   });
   console.log;
  return false;
});
 

Комментарии:

1. откуда берется .sort_rang?