Нажатие выбрать элемент значение как JSON - PullRequest
1 голос
/ 06 июля 2011

Из-за ограничений конструкции текущей системы мне нужно передать данные в элемент выбора как json, сбросить каждую опцию в объекте выбора со значением 'id' из json и заполнить второй элемент выбора с помощью 'sid' данные из json для создания динамической пары родитель-потомок элементов select.

Однако мне кажется, что я не могу успешно проанализировать значение параметра и поместить его в массив для использования в более позднем коде.

<select id="Sector">
    <option value="{'id':'Fruit','sid':['Apple','Orange']}"></option>
    <option value="{'id':'Veg','sid':['Tomato','Carrot']}"></option>
</select>

<script language="JavaScript" type="text/javascript">

    var plist = document.getElementById('Sector');
    var opts = plist.options;
    var x =[];
    for(i=0;i<opts.length;i++){
        x.push(opts[i].value);
    }

    alert(x[0]['id']);
</script>

Что я делаю не так ?? я

Ответы [ 2 ]

1 голос
/ 06 июля 2011

эта строка является проблемой

   x.push(opts[0]);

сначала, я думаю, что вам нужно сделать opts [0] .value, затем я думаю, что вам нужно использовать eval или JSON.parse, чтобы превратить его вобъект.

1 голос
/ 06 июля 2011

Значения опции: строки .Если вы хотите рассматривать их как объекты JavaScript, вам нужно запустить их через анализатор JSON .

Затем вы столкнетесь с другой проблемой, так как значения параметров не JSON .Используйте JSON Lint , чтобы найти свои ошибки (я не вижу ничего, кроме того, что вы используете ' в каждом месте, где вы должны использовать ").Если вы имеете дело с JSON, вы почти всегда должны создавать структуру данных на языке программирования, а затем запускать ее через сериализатор JSON, поэтому ручное создание JSON вызывает проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...