Skip navigation.
Home

Профессионально-матерное

Использование 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!

Где я накосячил, собратья? :)