赋值后Javascript对象仍为空
我有一个函数setStatus,我这样称呼它:赋值后Javascript对象仍为空,javascript,json,object,global,variable-assignment,Javascript,Json,Object,Global,Variable Assignment,我有一个函数setStatus,我这样称呼它: $.getJSON( '/api/v1/status', setStatus ); 函数如下所示: function setStatus(data) { status = data; console.log(data); console.log(status); timer = setInterval(updateStatus, 1000); } 当我运行此命令时,控制台会在包含我的数据的第一行打印一个漂亮的对
$.getJSON( '/api/v1/status', setStatus );
函数如下所示:
function setStatus(data) {
status = data;
console.log(data);
console.log(status);
timer = setInterval(updateStatus, 1000);
}
当我运行此命令时,控制台会在包含我的数据的第一行打印一个漂亮的对象,但在第二行打印[object object]。稍后,myupdateStatus尝试使用数据计算正常运行时间值:
function updateStatus() {
var table = $('#status');
table.find('#uptime').text(calculateUptime(status.bootTime*1000));
该表显示了一组NaN,可能是因为变量“status”为空。我做错了什么?您是否正确地在某个更高范围内声明了
状态变量
你应该有一个
var status = null;
在全局范围内的某个地方,或者在定义所述函数的闭包内。
这有帮助吗?在setStatus中,您似乎将数据
分配给局部变量状态
。你在全球范围内定义了状态吗?@Valdas Rapševičius:我在网上看到很多评论说,如果不定义该声明,你就会自动创建一个全球范围。但这并不重要,因为即使我将其放入代码中,仍然会失败。这一切都失败了:“var status;”、“var status=null;”、“var status=”、“window.status=data;”和“window.status=JSON.parse(JSON.stringify(data));”。我在jquery中使用了许多不同的复制技巧,但都不起作用。请参阅我对上面Valdas Rapševičius的回复。哦,我正在使用Firefox 33.1.1进行测试。很好,我刚刚发现了问题。Firefox不喜欢变量名“status”。如果我把它改成‘英格兰银行’,就不会有问题,而且它还能工作。我在这方面损失了几个小时的调试时间….:(