FWC:SmartSelect is avaible right now! Download FWC:SmartSelect
FlyWeb FlyWeb :ComponentsFWC:SmartSelect @ FlyWeb :Components
En | Ru




Библиотека 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')});
© 2007 «Александр Зинчук» / FlyWeb :Components. Лицензия: MIT. Сделано в FlyWeb / Дизайн: Бирзул Ярослав.