用变量创建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() };
请注意,这将包含解释对象文字时的元素值,而不是访问对象属性时的值。 你需要为此写一个吸气剂。