24

我正在尝试从我在表单中获取的变量创建一个 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={
^ Expecting '{', '['

4

5 回答 5

24

如果您需要双引号 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

于 2012-10-20T20:36:14.093 回答
13

它被称为Object Literal

我不确定你想要你的结构是什么,但根据你上面的内容,你把值放在变量中试试这个。

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

虽然这似乎更有意义(为什么你在上面的文字中有一个数组?):

var formObject = {
   firstName: firstName
   ...
}
于 2012-10-19T17:27:20.183 回答
6

试试这个,看看如何从字符串创建对象。

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);
于 2012-10-19T17:37:51.120 回答
4

在执行类似$('#lastName'). 那是一个具有id“lastName”属性的元素。为什么要这样做?您想引用存储在局部变量中的值,完全不相关。试试这个(假设赋值formObject与变量声明在同一范围内) -

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

不过这看起来很奇怪:您正在创建一个对象“formObject”,其中包含一个名为“formObject”的成员,该成员包含一个对象数组。

于 2012-10-19T17:27:39.717 回答
2
var formValues = {
    firstName: $('#firstName').val(),
    lastName: $('#lastName').val(),
    phone: $('#phoneNumber').val(),
    address: $('#address').val()
};

请注意,这将包含解释对象字面量时元素的值,而不是访问对象属性时的值。你需要为此编写一个吸气剂。

于 2012-10-19T17:42:08.093 回答