 |
Библиотека FWC:SmartSelect также предоставляет широкие возможности для работы с AJAX-подгрузкой каскадных списков.
В ней присутствуют две функции, отвечающие за погдрузку данных: loadOptions_JS и loadOptions_PHP .
Внимание!
Во второй версии библиотеки возможности AJAX-функций были расширены.
Данная статья не закончена, описание новых аспектов появится в ближайшее время.
Вот как они работают:
FWC_sSelect.loadOptions_JS({xml-файл}[,{имя атрибута}][,{массив значений}][,{callback-функция}])
Данная функция выполняет более простую работу: подгружает xml-файл и, если заданы второй и третий параметры, удаляет из него все теги fwc:option , заданный атрибут которых не соответствует ни одному значению из массива, передаваемого в третьем параметре.
Обычно в качестве массива передаётся свойство FWC_sSelect.value . Эта функция удобна, когда не требуется сложной обработки данных, когда все данные находятся в одном подготовленном небольшом XML-файле,
который может быть подгружен и обработан на клиенсткой стороне.
Приведу пример её работы. Предположим, нам нужно, чтобы пользователь вначале выбрал материк, затем страну, а после город. Первое, что мы должны сделать: подготовить xml-файл с данными.
Для примера, сделаем несколько файлов. В одном: список материков и стран, а в других - списки городов каждой страны.
Вызов функций с разными параметрами присваивается атрибутам-обработчикам onclose и onchange соответствующих списков. Исходные файлы:
ajaxjs_cont.xml, ajaxjs_country.xml,
ajaxjs_res.xml, data/
FWC_sSelect.loadOptions_PHP([{xml-файл},{xPath-выражение}][,{метод}][,{phpfile},{параметры}][,{callback-функция})
Вторая функция работает аналогично, только вместо параметров атрибута и массива значений здесь присутствует параметр задающий выражение XPath, передающееся вместе с ссылкой на XML-файл встроенному PHP-парсеру.
Вы также можете использовать собственный PHP-парсер, адрес к которому должен быть задан в соответствующем параметре (например, для вывода значений из БД или неподготовленных XML-файлов).
В следующих двух параметрах задается соответственно метод (POST по умолчанию) и набор параметров в виде JavaScript хэш-объекта ({param:'value',param2:'value2'} ) (не путать с JSON!)
Однако не забудьте, что в этом случае он должен возвращать корректный XML-код или JSON-Array.
О правилах описания списка через XML и JSON-Array читайте в первой и второй статьях документации.
Для формирования XPath-выражения на основе value какого-либо объекта списка вы можете воспользоваться следующей функцией:
FWC_sSelect.value2xpath({атрибут}[, {массив значений}][, {дополнительная строка}])
Массив значений по умолчанию - свойство value текущего объекта. Пример работы:
// obj.value == [1,2,3]
alert(obj.value2xpath('world',this.value,'or contains('a',.)'));
// -> //*["world='1' or world='2' or world='3' or contains('a',.)"]
В обеих функциях в последнем параметре вы можете задать callback-функцию, которая будет выполнена сразу после загрузки пунктов в список.
Если вы по каким-то причинам не хотите использовать встроенные подгрузчики loadOptions_*() , вы можете вручную передавать JSON-строку или XML-объект внутренней функции appendOptions() , которую используют встроенные подгрузчики после загрузки данных.
Во втором параметре передаётся callback-функция. Например так:
myCombo.appendOptions('[["I"],["Love"],["Russia"]]',function(){myCombo.showHideOptions('show')});
|
 |