我有一个启动AJAX调用的间隔来检查页面是否有任何更新(我想它类似于Facebook或StackExchange用来检查新通知的机制)。问题是此调用将光标更改为“progress”或“busy”光标(视觉问题)并禁用选项以单击链接(功能问题)。
我认为这两个问题都是相关的。如何摆脱这种影响或至少减少后果?
一些代码:
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');
}
}
});
}
答案 0 :(得分:2)
我认为在您的ajax调用中添加 async:true 选项会有效。否则浏览器将冻结,直到ajax停止,这不是你想要的