我不确定为什么我的功能只能运行一次。基本上在我的JSON中,GhStatus和CsStatus的值都为0,所以我期待两次警告“崩溃”。
但是,这组警报只发生一次。然后根据Chrome开发者工具,我每隔2秒就会收到错误消息:
Uncaught SyntaxError: Unexpected identifier
但是,输出并未指出代码中出现的位置= [
$(document).ready(GrabGhCsStatus());
function GrabGhCsStatus() {
var url = '@Html.Raw(Url.Action("index","GhCs"))';
window.setInterval(
$.get(url,function(data) {
if (data.GhStatus == 0) {
$('#GhCsStatus_CS').buttonMarkup({ icon: 'myapp-cs' });
alert('crash');
}
else {
$('#GhCsStatus_GH').buttonMarkup({ icon: 'myapp-gh' });
alert('running');
}
if (data.CsStatus == 0) {
$('#GhCsStatus_CS').buttonMarkup({ icon: 'myapp-cs' });
alert('crash');
}
else {
$('#GhCsStatus_GH').buttonMarkup({ icon: 'myapp-gh' });
alert('running');
}
}, "json"), 2000);
}
我格式化此代码的方式或我将函数放在哪里影响输出?
答案 0 :(得分:4)
语法错误,添加更多功能并正确关闭它们:
$(document).ready(function() { // needs anonymous function
GrabGhCsStatus();
});
function GrabGhCsStatus() {
var url = '@Html.Raw(Url.Action("index","GhCs"))';
$.get(url, function (data) {
if (data.GhStatus === 0 || data.CsStatus === 0) {
$('#GhCsStatus_CS').buttonMarkup({
icon: 'myapp-cs'
});
}else{
$('#GhCsStatus_GH').buttonMarkup({
icon: 'myapp-gh'
});
}
setTimeout(GrabGhCsStatus, 2000);
}, "json");
}
答案 1 :(得分:2)
setInterval的第一个参数需要是一个函数。
window.setInterval( function() {
$.get(url,function(data) {
if (data.GhStatus == 0) {
$('#GhCsStatus_CS').buttonMarkup({ icon: 'myapp-cs' });
alert('crash');
}
else {
$('#GhCsStatus_GH').buttonMarkup({ icon: 'myapp-gh' });
alert('running');
}
if (data.CsStatus == 0) {
$('#GhCsStatus_CS').buttonMarkup({ icon: 'myapp-cs' });
alert('crash');
}
else {
$('#GhCsStatus_GH').buttonMarkup({ icon: 'myapp-gh' });
alert('running');
}
}, "json") }, 2000);
答案 2 :(得分:1)
是的,你想将$ .get调用括起来并将该函数传递给setInterval:
window.setInterval( function() {
$.get....
}, 2000 );
setInterval需要一个函数作为第一个参数。 在你的情况下,$ .get()的返回值被传递到setInterval。 这可能是未定义的。