Подтвердить что ты не робот

Создание объекта json с переменными

Я пытаюсь создать объект json из переменных, которые я получаю в форме.

var firstName = $('#firstName').val();
var lastName  = $('#lastName').val();
var phone     = $('#phoneNumber').val();
var address   = $('#address').val();

Пока у меня есть код ниже, но он не будет проверять или работать. Я новичок в этом, пожалуйста, помогите! Изменение var:

var jsonObject = 
                {
                 firstName: firstName, 
                 lastName: lastName,
                 phoneNumber:phoneNumber,
                 address:address
                }

в JSONlint Я получаю эту ошибку:

Ошибка анализа в строке 1: varjsonObject = {
^ Ожидая '{', '['

4b9b3361

Ответ 1

если вам нужна двойная кавычка JSON JSON.stringify( object)

var $items = $('#firstName, #lastName,#phoneNumber,#address ')
var obj = {}
$items.each(function() {
    obj[this.id] = $(this).val();
})

var json= JSON.stringify( obj);

DEMO: http://jsfiddle.net/vANKa/1

Ответ 2

Он вызвал Object Literal

Я не уверен, что вы хотите, чтобы ваша структура была, но согласно тому, что у вас выше, где вы помещаете значения в переменные, попробуйте это.

var formObject =  {"formObject": [
                {"firstName": firstName, "lastName": lastName},
                {"phoneNumber": phone},
                {"address": address},
                ]}

Хотя это кажется более разумным (почему у вас есть массив в приведенном выше литерале?):

var formObject = {
   firstName: firstName
   ...
}

Ответ 3

Вы ссылаетесь на элемент DOM, когда делаете что-то вроде $('#lastName'). Это элемент с атрибутом id "lastName". Зачем это? Вы хотите ссылаться на значение, хранящееся в локальной переменной, совершенно не связанную. Попробуйте это (если присваивание formObject находится в той же области, что и объявления переменных) -

var formObject = {
    formObject: [
        {
            firstName:firstName,  // no need to quote variable names
            lastName:lastName
        },
        {
            phoneNumber:phoneNumber,
            address:address
        }
    ]
};

Это выглядит очень странно: вы создаете объект "formObject", который содержит элемент с именем "formObject", который содержит массив объектов.

Ответ 4

Попробуйте это, чтобы увидеть, как вы можете создать объект из строк.

var firstName = "xx";
var lastName  = "xy";
var phone     = "xz";
var adress    = "x1";
var obj = {"firstName":firstName, "lastName":lastName, "phone":phone, "address":adress};
console.log(obj);

Ответ 5

var formValues = {
    firstName: $('#firstName').val(),
    lastName: $('#lastName').val(),
    phone: $('#phoneNumber').val(),
    address: $('#address').val()
};

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