Профессионально-матерное
Использование JavaScript напоминает езду по скользкой дороге на лысой резине и с завязанными глазами: ощущение, что тебя уже понесло - каждый второй раз, не считая каждого первого. Вот простой пример с использованием jQuery EasyUI:
В jsp-странице пишем:
< select id=" treeSelector " name = " dept " class = " easyui-combobox " style = " width: 160px;" />
(не обращайте внимания на пробелы, это для обмана браузера)
Затем чуть ниже::
собственно fill_combo();
function fill_combo()
{
jq.getJSON(
'ajax/fillcombo.htm',
function(data)
{
jq("#treeSelector").empty();
jq.each(data, function()
{
alert("key: " + this.id + " value: " + this.text);
//
jq('#treeSelector').append( jq('').val(this.id).html(this.text) );
//
if (this.selected)
{
selectedText = this.text;
}
});
//
alert("selected text = " + jq("#treeSelector").find('option:selected').text()); // чОрная магия и драконы
alert("selected id = " + jq("#treeSelector").find('option:selected').val()); // появляются здесь.
}
);
AJAX-запрос выдает вполне себе кошерный ответ (это на сервере):
[{"id": 1, "text": "tree N 1", "selected": false}, {"id": 2, "text": "tree N 2", "selected": true}, {"id": 3, "text": "tree N 3", "selected": false}, {"id": 6, "text": "tree N 4", "selected": false}]
который на стороне клиента отлично показывается вот здесь:
alert("key: " + this.id + " value: " + this.text);
Но самое при этом веселое, это тот факт, что после того, как эта функция отработала:
а) комбобокс остается девственно чистым.
б) последние два алерта таки действительно выдают "Tree N 1" и "1" несмотря на предыдущий пункт. Т.е. к этому комбобоксу можно обратиться, взять из него данные, которые вроде бы как там сидят, но при этом комбобокс будет выглядеть пустым.
Я попробовал все методы заполнения комбобокса данными, которые сумел найти в гугле. Нашел веселый сайд-эффект, например, вот такая конструкция:
jq("#treeSelector").replaceWith("
создает второй комбобокс (со всеми данными, но недоступными напрочь со стороны JS-кода ).
...но так и не сумел заставить это работать. Хрен с ним, с веселым синтаксисом этого языка. Хрен с ней с веселой документацией на эту библиотеку, которую явно писали растаманы, празднуя сбор очередного урожая древовидной конопли. Но это же, %"§%§$ должно быть примитивно, это ж не rocket sience!
Где я накосячил, собратья? :)
- cynic's blog
- Login to post comments