0

我不确定为什么我的函数只能运行一次。基本上在我的 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);                                                  

   }

是我格式化此代码的方式还是我放置影响输出的函数的方式?

4

3 回答 3

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");
}
于 2013-09-12T21:28:54.203 回答
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);
于 2013-09-12T21:28:00.430 回答
1

是的,您想将 $.get 调用包含在一个函数中并将该函数传递给 setInterval:

window.setInterval( function() {
    $.get....
}, 2000 );

setInterval 需要一个函数作为第一个参数。在您的情况下,$.get() 的返回值被传递给 setInterval。那可能是未定义的。

于 2013-09-12T21:29:14.150 回答