花了一点时间去实现这一点,有一个解决方案,我认为作品相当不错,在Firefox,但在IE浏览器中进行测试时发现,使用异步:假导致浏览器被锁定(停止响应和apprears有冰冻)在通话期间。
要求基本上如下。我提供了一系列用户可以检查的复选框。在特定的时间,我调用我的函数'selectedSeriesData()',这个函数使用发送请求到我的服务一个接一个地获取请求的数据。我特别选择使用同步,以便在方法执行时向浏览器输出状态消息和警告。
例如。 “加载数据1/3”,然后选择“加载数据的2/3”,“加载数据3/3”
当然,我现在才知道,这一定锁定浏览器,以便在IE中的经验,不仅锁定浏览器,但我试图显示的任何消息都没有显示。是否有任何简单的doEvents类似于在每次调用ajax之后可以调用的动作,还是仅仅是重构我的ajax调用的问题。如果是这种情况,根据我的要求提供任何实施建议?
下面是代码以供参考的简化的提取物。
function selectedSeriesData() {
var seriesData = [];
var index = 0;
$.each($("input[name='idCheckBox']:checked"), function() {
var id = $(this).val();
$("#loadingMessage").text("Loading " + id + "...");
$.ajax({
type: 'POST',
async: false,
url: '<%: loadSeriesDataPath %>',
dataType: 'json',
data: {
Id: id
},
success: function (data) {
seriesData[index] = data;
index++;
},
error: function (xhr, ajaxOptions, error) {
$("#warnings ul").append('<li>A communication error occured while attempting to load data for the series.</li>');
}
});
}
});
return seriesData;
}
你是什么意思的“锁”? – OptimusCrime 2012-04-20 08:59:56
OptimusCrime,当我说锁,我的意思是浏览器实际上停止响应,并且只有在循环完成执行后才开始响应。因此,对于使用IE的最终用户来说,它看起来像浏览器崩溃了。 – Arkiliknam 2012-04-20 09:02:12
你能提供jsFiddle的例子吗? – tarmaq 2012-04-20 09:04:19