Как создать пользовательский объект из сериализованной формы? - PullRequest
0 голосов
/ 05 июня 2009

Мне нужно передать несколько сериализованных элементов формы в функцию, чтобы вернуть их как объект JSON. Я написал функцию, но fieldName заканчивается в объекте json как «fieldName» вместо фактического имени поля т.е. «PositionId» или «Серия». Однако значения верны. JS не позволит мне использовать field.name, но он позволяет field.value, поэтому мне пришлось создать var fieldName. Вот функция:

function SerializedFormToJSON(serializedForm){
   var myJSONObject = {};
   var fieldName = "";
   $.each(serializedForm, function(i, field) {
      fieldName = field.name;
      if (field.value != "" && field.value != "ALL") {
        myJSONObject = { fieldName: field.value };
      }
   });
return myJSONObject;
}

Ответы [ 3 ]

3 голосов
/ 05 июня 2009

Помимо проблемы, с которой вы сталкиваетесь, вы воссоздаете объект на каждой итерации цикла. Строка, в которой вы устанавливаете свойство, должна выглядеть следующим образом:

myJSONObject[fieldName] = field.Value;

Полная функция:

function SerializedFormToJSON(serializedForm){
   var myJSONObject = {};
   var fieldName = "";
   $.each(serializedForm, function(i, field) {
      fieldName = field.name;
      if (field.value != "" && field.value != "ALL") {
        myJSONObject[fieldName] =  field.value;
      }
   });
return myJSONObject;
0 голосов
/ 05 июня 2009

Попробуйте использовать запись индекса массива:

myJSONObject[fieldName] = field.value;
0 голосов
/ 05 июня 2009
myJSONObject[fieldName] = field.value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...