我最近一直在修补 Z-Wave,我正在尝试制作一个页面来包含/排除他们的产品。但进展不太顺利。我正在尝试检查 JSON key 是否存在,然后将其显示在页面上。我明白了
TypeError: data.controller is undefined
代码如下:
window.setInterval(function(){
getData();
}, 2000);
function getData()
{
var milliseconds = (new Date).getTime();
var time = milliseconds.toString().substr(0, milliseconds.toString().length - 3) ;
$.postJSON( "http://192.168.1.102:8083/ZWaveAPI/Data/" + time, function( data ) {
if(data.controller.lastExcludedDevice.value) alert("EXCLUDED SOMETHING");
if(data.controller.lastIncludedDevice.value) alert("INCLUDED SOMETHING");
});
}
$.postJSON = function(url, data, callback, sync) {
// shift arguments if data argument was omited
if ( jQuery.isFunction( data ) ) {
sync = sync || callback;
callback = data;
data = {};
};
$.ajax({
type: 'POST',
url: url,
data: data,
dataType: 'json',
success: callback,
error: callback,
async: (sync!=true)
});
};
JSON:
{
"controller.data.controllerState": {
"value": 0,
"type": "int",
"invalidateTime": 1424781697,
"updateTime": 1425338938
},
"controller.data.lastIncludedDevice": {
"value": 42,
"type": "int",
"invalidateTime": 1424781697,
"updateTime": 1425338938
},
......
非常感谢任何帮助。
最佳答案
如果点是 key 的一部分,则需要使用 []
表示法。
例如
if (data['controller.data.controllerState'].value) ...
或
if (data['controller.data.lastIncludedDevice'].value) ...
关于javascript检查JSON键是否存在并显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821366/