遇到了一个奇怪的问题......下面的代码将表格中的SNMP对象/值列表输出到您提供的任何OID中。然而,代码有效,变量'jason'不能像我想象的那样工作。
首先,我无法从Chrome控制台访问'jason'对象(console.log || console.dir)。
第二个问题是,如果我在'for in'循环中放入console.log(key),它就不会输出任何内容。
第三个问题是如果我使用点表示法来访问for循环输出'undefined'中的jason属性。
最后一个问题是我从其他Stack帖子中读到像对象这样的数组不应该使用'for in'循环但是当我将它更改为常规for循环时它不起作用....
它像我的jason变量不存在,但它确实和下面的脚本工作???我想我误解了JS语言的核心内容。提前感谢任何指导。
document.getElementById('submit').addEventListener('click', function(){
document.getElementById('msg').innerHTML = '<br /><button class="btn btn-success" disabled="disabled"> <i class="fa fa-spinner fa-spin"></i> </button> Loading...';
request = new XMLHttpRequest();
var host = document.getElementById('host').value,
comm = document.getElementById('comm').value || 'public',
oid = document.getElementById('oid').value || '1.3.6.1.2.1.2.2';
var post_vars = 'host=' + encodeURIComponent(host);
post_vars += '&comm=' + encodeURIComponent(comm);
post_vars += '&oid=' + encodeURIComponent(oid);
request.open('POST', 'snmp_json.php');
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.addEventListener('readystatechange', function() {
if (request.readyState === 4 && request.status === 200) {
var jason = JSON.parse(request.responseText);
var output = '<table class="table table-hover">';
output += '<thead><tr><th>Object</th><th>Value</th></tr></thead>';
output += '<tbody>';
for (key in jason) {
output += '<tr><td>' + key + '</td>';
output += '<td>' + jason[key] + '</td></tr>';
}
output += '</tbody></table>';
document.getElementById('msg').innerHTML = output;
};
});
request.send(post_vars);
});
答案 0 :(得分:0)
Chrome无法访问JSON对象,因为它是事件处理程序中的私有对象。要访问该对象,请在document.getElementById('submit')