【发布时间】:2015-01-21 06:26:48
【问题描述】:
我有一个函数 setStatus 我这样调用:
$.getJSON( '/api/v1/status', setStatus );
函数如下所示:
function setStatus(data) {
status = data;
console.log(data);
console.log(status);
timer = setInterval(updateStatus, 1000);
}
当我运行它时,控制台会在第一行打印一个不错的对象,其中包含我的数据,但它会在第二行打印 [object Object]。稍后我的 updateStatus 尝试使用数据来计算正常运行时间值:
function updateStatus() {
var table = $('#status');
table.find('#uptime').text(calculateUptime(status.bootTime*1000));
该表显示了一堆 NaN,推测是因为变量“状态”为空。我做错了什么?
【问题讨论】:
-
在 setStatus 中,您似乎将
data分配给了局部变量status。您是否在全局范围内定义了status? -
@Valdas Rapševičius:我在网上看到很多 cmets 说,通过忽略该声明,您会自动创建一个全局变量。但这没关系,因为即使我把它放在代码中仍然失败。它在所有这些上都失败了:“var status;”、“var status = null;”、“var status = '';”、“window.status = data;”和“window.status = JSON.parse(JSON.stringify(data));”。我用 jquery 经历了许多不同的复制技巧,所有这些都不起作用。
标签: javascript json object global variable-assignment