2

我有一个间隔来启动 AJAX 调用以检查页面是否有任何更新(我想它类似于 Facebook 或 StackExchange 用于检查新通知的机制)。问题是此调用将光标更改为“进度”或“忙碌”光标(视觉问题)并禁用单击链接的选项(功能问题)。

我想这两个问题是相关的。如何才能摆脱这种影响或至少将后果降至最低?

一些代码:

setInterval(function() {
    try {
        var mid = $($("ul#alert-messages li.regular")[0]).attr('ref');
        call_ajax('/load_alerts', {num:0, id:mid}, function (data) {
            if (data.ok) {
                for (var i=0; i<data.result.length; i++) {
                    // ....
                }
                // ...
            }
        }, function() {},          // Do not show any error for this!!
        false);                    // Do not change cursor!
    } catch (e) {}
}, 15000);

function call_ajax(url, data, fnSuccess, fnError) {
    $.ajax({
        'url': url,
        'type': 'POST',
        'data': data,
        'dataType': "json",
        'success' : function(data) {
            if (fnSuccess) {
                fnSuccess(data);
            } else {
                if (typeof data.msg != 'undefined') {
                    topBar(data.msg, typeof data.ok != 'undefined' && data.ok? 'message' : 'error');
                }
            }
        },
        error : function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
            if (fnError) {
                fnError(STR_ERROR_AJAX + textStatus);
            } else {
                topBar(STR_ERROR_AJAX + textStatus, 'error');
            }
        }
    });
}
4

1 回答 1

2

我认为将选项async:true添加到您的 ajax 调用中就可以了。否则浏览器将冻结,直到 ajax 停止,这不是你想要的

于 2012-06-04T16:04:45.603 回答