Как вы JSON сериализуете набор скрытых входных значений (можно использовать jQuery)? - PullRequest
1 голос
/ 03 августа 2009

У меня следующая структура DOM ..

<input id="WorkAssignmentID_3462" type="hidden" value="3462" name="WorkAssignmentID"/>
<input id="WorkItemID_3462" type="hidden" value="3633" name="WorkItemID"/>
<input id="EmployeeID_3462" type="hidden" value="15" name="EmployeeID"/>
<input id="AssignedBy_3462" type="hidden" value="Jonathan Erickson" name="AssignedBy"/>
<input id="AssignedDate_3462" type="hidden" value="8/1/2009 12:00:00 AM" name="AssignedDate"/>
<input id="ExpirationDate_3462" type="hidden" value="" name="ExpirationDate"/>
<input id="RegisteredDate_3462" type="hidden" value="8/1/2009 12:00:00 AM" name="RegisteredDate"/>

Позвольте мне просто сказать, что селектор jQuery для получения всех этих элементов DOM выглядит следующим образом:

$('#assignment');

и я хочу создать объект JSON из этого набора:

var WA = {
    WorkAssignmentID: '3462',
    WorkItemID: '3633',
    EmployeeID: '15',
    AssignedBy: 'Jonathan Erickson',
    AssignedDate: '8/1/2009 12:00:00 AM',
    ExpirationDate: '',
    RegisteredDate: '8/1/2009 12:00:00 AM',
};

Какой самый простой способ сделать это?

Я думал о том, чтобы сделать что-то подобное, но это не сработало, потому что я не думаю, что вы можете динамически создавать свойство объекта JSON ... Возможно ли динамически создать имя свойства? *

var WA = {};

$('#assignment').each(function(idx, elem) {
    $.extend(WA, {
                     $(elem).attr('name'): $(elem).val()
                 });
});

Ответы [ 2 ]

3 голосов
/ 03 августа 2009

Как насчет этого, используя скобку :

var result = {};

$('input[type=hidden]').each(function() {
    result[this.name] = this.value;
});
2 голосов
/ 03 августа 2009

Вызов $ .extend () излишний, ИМО. Но у вас есть базовый подход, который я бы использовал

var WA = {};
$('input[type="hidden"]').each( function( idx, elem )
{
  WA[elem.name] = elem.value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...