将对象追加到 JSON 列表
Appending objects to JSON lists
发生了
异常,我不确定为什么,因为我是JS的新手。一旦我到达该行testData["beacons"].append(beacon);
我的代码就会跳转到catch(e)
.我假设我不能将对象附加到其他数组?
.JS:
$(document).ready(function() {
// Data to describe what kind of test
var testData = {
"timestamp": "",
"hive": 0,
"hdfs": 0,
// Contains a list of testData objects
"beacons":[]
};
var testRun = document.getElementById("test-form");
testRun.addEventListener('submit', function(event) {
event.preventDefault();
var selectedTest = document.querySelector('input[name=test-select]:checked');
alert(selectedTest);
var testType = selectedTest.id;
if (testType == "hdfs-test") {
testData["hdfs"] = 1;
testData["hive"] = 0;
} else if (testType == "hive-test") {
testData["hdfs"] = 0;
testData["hive"] = 1;
} else if (testType == "hdfs-hive-test") {
testData["hdfs"] = 1;
testData["hive"] = 1;
} else {
// null
}
var events = document.getElementById("event-textarea").value;
// check in valid input
var eventSource = events.replace("],[","],,,,[");
// beaconLists allows users to submit --> [{beacon1}, {beacon2}, ...], [{beacon3}, {beacon4}, ...]
var beaconLists = eventSource.split(",,,,");
for (var i = 0; i < beaconLists.length; i++) {
// inspect one list in beaconLists [{beacon1}, {beacon2}, ...]
var beaconList = beaconLists[i];
try {
// list of JSON objects
var beaconObjList = JSON.parse(beaconList);
for (var j = 0; j < beaconObjList.length; j++) {
var beaconObj = beaconObjList[j];
if (beaconObj["data"] && beaconObj["application"]) {
// successful parse to find events
// describe beacon being tested
alert("yes");
var beacon = {
"app_name": beaconObj["application"]["app_name"],
"device": beaconObj["application"]["device"],
"device_id": beaconObj["application"]["device_id"],
"os": beaconObj["application"]["os"],
"os_version": beaconObj["application"]["os_version"],
"browser": beaconObj["application"]["browser"],
"beacon": beaconObj
};
// append to testData
testData["beacons"].append(beacon);
// reset beacon so we can append new beacon later
beacon = {};
} else {
// notify event isn't in the correct format?
alert("no");
}
}
} catch (e) {
// notify bad JSON
alert("failed");
}
}
console.log(testData);
//$.ajax({
// type: "POST",
// url: "/test/",
// data: testData,
// success: function () {
// alert("yay");
// },
// failure: function () {
// alert("boo");
// }
//});
});
});
拥有对象数组并没有错。JavaScript 处理得很好。主要问题是append
是一个用于添加元素的jQuery API方法(伪原生appendChild
)。 push
是添加到数组的方式。
testData["beacons"].push(beacon);
此外,代码的这一部分是有问题的。
// reset beacon so we can append new beacon later
beacon = {};
变量beacon
和此处添加的变量testData["beacons"]
相同。在 JavaScript 中,testData["beacons"]
最近的beacon
的值与变量 beacon
相同。当变量 beacon
中的值设置为 {}
时,数组的值也是如此。只需删除此行代码。在设置的变量环境中,使用 var
将为每次迭代beacon
设置一个新变量。
你应该使用 push 方法,比如:
testData["beacons"].push(beacon);
相关文章:
- 选择菜单,将json列表与单数值进行匹配
- 在javascript错误中将json列表传递给数组
- 如何循环浏览JSON列表
- 循环访问本地存储中的 json 列表
- JS+REST+NodeJS:如何从 JSON 对象解析 JSON 列表
- 在 ng-repeat 中添加和删除 JSON 列表
- 使用 Jquery 将 SelectListItems 的 JSON 列表映射到下拉列表 Select List 并指示
- 将对象追加到 JSON 列表
- 从控制器 MVC 返回的 JSON 列表中获取值
- 解析通过 ajax 返回的多个 json 列表
- 在JQuery / Javascript中加载从JSON列表返回的URL的最佳方法是什么
- AngularJS计算函数中的字符串,以调用json列表上的属性
- Json列表到javascript对象来构建一个表单
- 角度静态JSON列表不会呈现
- 按相反的顺序解析json列表
- 从自动填充的JSON列表中获取列表选项值,并传递给JS函数
- 如何在javascript文件中使用json列表文件绘制堆叠条形图
- 在JSON列表中拼接一个元素
- 从http://www.autorenlexikon.lu接收JSON列表
- 创建带有字符串和bool值对象的Json列表