【发布时间】:2010-11-29 16:13:30
【问题描述】:
我有 Chrome 7.0 并且正在尝试访问全局对象的字段。该代码在 Firefox 和 IE 中运行良好,但 Chrome 的调试器并没有帮助我到达任何地方。我试过 Safari 也有问题。
我可以得到计时器的值,但是当我通过控制台访问状态时,我得到"[object Object]"。 status.completedJobs 即使在status = $.parseJSON(msg.d); 之后也会返回undefined(json 字符串有效)。
我不确定在此之后该怎么做。从控制台调用$.parseJSON(msg.d); 可以工作,我可以使用调试器查看对象的字段。如何获得正确分配和全局可访问的状态对象?
这是我的代码:
//Object that holds result of AJAX request
var status = new Object();
//Refresh timer variables
var timer;
var timer_is_on = 0;
$(document).ready(function() {
update();
doTimer();
});
/**
* Performs the AJAX request and updates the page
*/
function update() {
$.ajax({
type: "POST",
url: "Default.aspx/getStatus",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
if (msg) {
try {
status = $.parseJSON(msg.d);
} catch (e) {
console.log(e);
}
updateProgressBar();
}
}
});
}
function updateProgressBar() {
var percent = Math.round(status.completedJobs / status.numJobs * 100);
$('#progressPercentage').text(percent + '%');
$('#progressbar').progressbar({
value: percent
});
}
/**
* Used to initialize the timer.
*/
function doTimer() {
if (!timer_is_on) {
timer_is_on = 1;
timedCount();
}
}
/**
* Executed on every time interval.
*/
function timedCount() {
update();
timer = setTimeout("timedCount()", 3000);
}
【问题讨论】:
-
你试过
console.dir()吗? -
你确定
msg.d吗?你会返回什么数据? -
感谢大家的快速回复。
console.dir()产生undefined。 msg.d 的回复是:{"d":"{\"numJobs\":269389,\"completedJobs\":102423,\"running\":true}"} -
Chrome 中的“通过控制台访问状态”是什么意思?我也在 Chrome 7 中,当我执行 console.log(varName) 时,它让我可以选择扩展对象以进行浏览。此外,我可以直接在控制台中输入 varName 并按回车键来获得相同的结果(更不用说在变量名上自动完成以显示它看到它)我唯一看到 [object Object] 表示法是在使用 alerts()
-
您可以使用调试器浏览 DOM,这就是我看到 [object Object] 的地方。打开控制台后,您可以键入 varname,它会向您显示内容,而无需在代码中执行明确的 console.log。也可以通过这种方式调用函数。
标签: javascript google-chrome safari webkit global-variables