jquery json select - установка опции выбора для всего элемента json, а не только для его значения - PullRequest
0 голосов
/ 21 сентября 2011

Я иду через объект json javascript, чтобы создать опции для выбора. это работает нормально, если я использую 1 элемент, вот так (это в моем «успехе» от вызова ajax .... получение данных из php) ...

var my_json = JSON.parse(data); 
for (var a=0; a < my_json.length; a++)
{
$('#my_list')
.append($('<option', { value: my_json[a].SOMEFIELD } )
.text(my_json[a].SOMEOTHERFIELD)); 
} 

Это прекрасно работает, но вместо того, чтобы установить значение только в 1 поле, я хочу установить:

value: my_json[a]  

и передать 6 или 7 полей в качестве значения параметра ... - проблема в том, что в моей функции onclick для выбора я могу получить значение val из выбора и увидеть, что это объект, но пытается вывести любое поле из кажется, что он не определен ....
pass_data = $ ('# my_list'). val ();
var прошло_id = прошло_данные [0] .ID;
и попробовал ...
var прошло_id - прошло_данных [ID];
и т.д ... они не определены ....
я могу видеть, что "sent_data" является объектом, но не могу извлечь из него никаких полей ...

Ответы [ 3 ]

1 голос
/ 22 сентября 2011

Если я понял, что вы пытаетесь сказать, вам нужен один выбор, чтобы иметь несколько значений в значении? Если это так, я бы предложил добавить пользовательские атрибуты для каждого из выбранных вами элементов, а затем просто прочитать их. Примерно так:

$("#SelectBox").append($("<option />").val("OriginalValue").text("RandomText").attr("CustomAttribute","CustomAttributesValue"));

Чтобы получить пользовательские атрибуты, вы можете сделать это следующим образом:

$("#SelectBox").change(function() {
    alert($(this).find("option:selected").attr("CustomAttribute"));
});

Это вернет CustomAttribute для каждого элемента выбора.

Надеюсь, это поможет, и это то, что вы спрашиваете. Если нет, не могли бы вы уточнить вопрос?

Спасибо

РЕДАКТИРОВАТЬ: Это может нарушить DOCTYPE страницы, что означает, что XML-код страницы является неправильным. Вы можете изменить его и добавить свои собственные атрибуты. Ваша страница будет отображаться постоянно (не поймите меня неправильно), но она недействительна. Проверьте это если вы заботитесь о правильности XML

1 голос
/ 22 сентября 2011

спасибо, ребята. я закончил тем, что установил значение опции в a (моя переменная счетчика в цикле for). тогда я сделал var my_json глобальным. таким образом, в моей функции onchange для выбора я просто делаю:

var passed_element_number = ($'#my_select_list').val();
var passed_id = my_json[passed_element_number].ID;
var passed_otherfield = my_json[passed_element_number].OTHERFIELD;

Я не уверен, почему он не позволил мне установить объект who json в качестве значения для опции select, а затем вывести поля 1 на 1 (возможно, это моя ошибка, или, возможно, это невозможно), но это работает нормально ....

0 голосов
/ 22 сентября 2011

Это довольно нечитаемо, пожалуйста, отредактируйте и нажмите на кнопку «Код».

В любом случае, из того, что я прочитал, я не знаю, решит ли это вашу проблему, но использование $.eachлучше я верю:

var my_json = JSON.parse(data); 
$.each(my_json, function(){
    $('#my_list').append($(this).SOMETHING);
});
...