2013-10-10 2 views
0

У меня есть страница tha показывает результаты. Результаты загружаются в содержимое div через запрос ajax на (document) .ready. Результаты могут быть отфильтрованы с использованием формы. В $ (# filter_form) .submit() выполняется запрос ajax, а содержимое div заполняется отфильтрованными результатами. Здесь все хорошо.Загрузить те же самые результаты назад кнопка

При нажатии на результат будут загружены данные о результатах на новой странице, а не на ajax-нагрузку. При нажатии кнопки «Назад» мы возвращаемся к странице результатов, флажки формы по-прежнему проверяются, но фильтры больше не применяются к результатам. Очевидно, что на document.ready сделан первый, нефильтрованный запрос ajax и загружаются нефильтрованные результаты.

Моя первоначальная идея была на странице, готовой проверить, проверен ли какой-либо элемент формы, и если они были, отправить форму. Проблема в том, что я понятия не имею, как это сделать.

Мой скрипт для загрузки отфильтрованных результатов заключается в следующем:

$('#filter_form').submit(function(e){ 
e.preventDefault(); 

     $.ajax({ 
       url: '<?=base_url().'catalog/show_listings/?';?>'+queryString, 
       type:'GET', 
       data: $('form#filter_form').serialize(), 
       dataType: 'json', 
       success: function(listings){ 
         $('#result_container').html(listings); 
        } // End of success function of ajax form  
     }); // End of ajax call 
    }); 

мне удалось выяснить, как проверить, если какие-либо элементы формы активны: не

var validate= false; 

    $('#requestfilter_from').each(function(){ 
     if($(this).val() != '' || $(this).attr('checked')) 
      validate = true; 
    }); 

Я просто не знаю, как объедините их. Я попробовал запустить ajax-запрос во втором скрипте (у этого сценария больше нет), но он не дал никаких результатов.

Любые предложения или указатели будут очень признательны.

ответ

1

Я думаю, что проблемы сводятся к сохранению «состояния» фильтров (отслеживание которых проверяется, даже если пользователь покидает страницу).

Вы можете легко сделать это, добавив параметры запроса к URL-адресу. Например, если кто-то выбирает фильтр checkbox1, вы можете добавить &checkbox1=true к URL-адресу. Таким образом, даже , когда пользователь покидает страницу и обращается к кнопке возврата, у вас будет &checkbox1=true в URL-адресе.

Теперь необходимо изменить начальную загрузку данных для учета параметров запроса. Так что не загружайте все данные в начале. Вместо этого, проанализируйте параметр запроса, подготовьте url на основе фильтров, найденных в параметрах запроса, а затем запустите запрос ajax, который загружает исходные данные.

Вот шаги -

  1. При выборе фильтра, добавьте параметр запроса в URL.
  2. На $(document).ready, синтаксический анализ параметры запроса и
    • Убедитесь, что вы обновить окно ввода, так как они отражают состояние фильтров. Например, если &checkbox1=true был найден в URL-адресе, убедитесь, что input[name=checkbox1] проверен.
    • Пожар начальный Аякса запрос с фильтром параметры

Это приходит с бонусом. Теперь ваши пользователи также могут передавать URL с выбранными фильтрами.

PS: Посмотрите на jQuery.param.querystring

+0

Спасибо!Только то, что мне нужно! Вопрос: я просматриваю флажки и проверяю, отмечены ли они или нет, а затем добавляет или вычитает их из массива, который затем я использую параметр для создания запроса? Или есть способ перенести всю форму в одно изменение на любой флажок без необходимости добавлять и вычитать, если флажки отмечены или нет? – Jursels

+0

Нет. Вам не нужно будет разбирать форму. Просто обновляйте параметр запроса, когда что-то проверяется. Если флажок снят, проанализируйте параметр запроса и удалите из него значение '& key = value'. Все запросы ajax производятся путем анализа параметра запроса, а не 'form'. Параметр запроса - ваш единственный источник правды, и все остальное его обновляет или читает. –

+0

Я вышел из своей зоны комфорта здесь. Я попытался это:. $ ('# форма filter_form ввод') изменить (функция() {. \t \t \t оповещения ($ парам ('# form.fiter_form')); \t \t}); Но он возвращает ту же строку независимо от отмеченных боксов: 0 = f & 1 = o & 2 = r & 3 = m & 4 =% 23 & 5 = f & 6 = i & 7 = l & 8 = t & 9 = e & 10 = r & 11 = _ & 12 = f & 13 = o & 14 = r & 15 = m – Jursels

Смежные вопросы