我正在尝试从表单生成JSON文档。我想要的输出如下所示:
{
"name": "joe-pc",
"device_type": "server",
"os": "windows",
"info": [
{
"net_info": [
{
"ip": "192.168.0.5",
"name": "eth0"
},
{
"ip": "192.168.0.28",
"name": "eth1"
}
]
},
{
"OS_info": [
{
"name": "windows"
},
{
"build": "123.1.3"
}
]
},
{
"whatever_info": [
{}
]
}
]
}
我得到的是:
{"info":[{}]}
代码截图:
$('#top_three_next').click(function (e) {
var json_obj = new Object();
json_obj.name = $('#name').val(); //manditory
json_obj.device_type = $('#device_type').val(); //manditory
json_obj.os = $('#os').val(); //not a manditory field
// is this not available outside the function?
// even if I declare json_obj as a global var?
});
完整代码:
http://jsfiddle.net/jdell64/Tu9bB/(从 JS 窗格中的第 93 行开始)。
首先,你在jsfiddle上的代码看起来有点混乱:)
明白了
var json_obj = new Object();
第 95 行的声明。根本不需要此行。因为您已经在 JS 的开头定义了空json_obj。并且此声明覆盖全局变量并使用回调范围内的局部变量,并且在回调结束后缺少其中填写的所有数据。如果删除该行,则末尾将得到以下结构。
{"name":"1","device_type":"2","os":"3","info":[{}]}
编辑:另外,191-192行对我来说完全不清楚:
infoList.push(infoDocs);
json_obj.info = infoList;
infoDocs
和 infoList
变量都没有在事件处理程序函数中定义,但它们也没有全局定义!