编辑 - 问题解决: 它最终成为服务器端问题。以下评论中的更多细节。
我的网页允许用户根据参数更新图表。当用户更改选择(检查/取消选中选项)时,将通过Ajax调用更新图表。
当用户快速检查/取消选中选项时,会出现问题。当它发生时,我确保当前请求被中止并且创建一个新请求。这是我的简化代码:
function refreshGraph() {
// Abort current running request (if any)
var currentlyLoading = (xhrDashboard != null && xhrDashboard !== undefined);
if (currentlyLoading) {
xhrDashboard.onreadystatechange = null;
xhrDashboard.abort();
}
// Ajax call.
var ajaxParams = {
url: '/Dashboard/ReadyMix/GraphPartial',
data: parameters,
traditional: true,
cache: false,
type: 'POST',
success: function (responseData) {
$(".graphContainer").html(responseData);
},
error: function (xhr, text_status, error_thrown) {
$(".graphZone").html("Error during loading...");
},
complete: function (xhr) {
xhrDashboard = null;
}
};
xhrDashboard = $.ajax(ajaxParams);
}
在Chrome中,我得到了预期的行为。第一个(或最新的)呼叫被取消,无论用户在短时间内做出多少更改,都会进行新的呼叫(例如:5秒内的选项会在几秒钟内发生变化)。
Internet Explorer(在多台计算机上测试的版本11)从我更快地更改选项到中止2请求并启动第3个请求的那一刻开始等待。在调试(Visual Studio)中启动我的应用程序时,它工作正常,但只要我将它放在我们的沙盒服务器上就会出现问题。
以下是Chrome(沙盒服务器)的屏幕截图 Chrome network screenshot when aborting ajax requests then making a new one
现在这里是IE卡在“等待”的屏幕截图 IE network screenshot when stuck on waiting after aborted ajax requests
任何建议都将不胜感激。