用变量创建json对象

我试图从我在表单中获得的变量创建一个json对象。

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

到目前为止,我有下面的代码,但它不会validation或工作。 我是新来的,请帮忙! 将var更改为:

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

在JSONlint我收到此错误:

第1行的解析错误:varjsonObject = {
^期待'{‘,'[‘

如果你需要双引号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); 

演示: http : //jsfiddle.net/vANKa/1

它被称为Object Literal

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

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

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

 var formObject = { firstName: firstName ... } 

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

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

这看起来很奇怪:你正在创建一个对象“formObject”,它包含一个名为“formObject”的成员,它包含一个对象数组。

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

 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); 
 var formValues = { firstName: $('#firstName').val(), lastName: $('#lastName').val(), phone: $('#phoneNumber').val(), address: $('#address').val() }; 

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