我有两个关于AJAX和Asynch调用Web服务的问题。
1) 加载页面时,会向Web服务页面ASMX发出18个AJAX请求。您可以在下图中看到,在开始时只处理了6个请求,当其中一个请求完成时,另一个请求被接受。
如何增加同时接受治疗的最大数量?从6到18岁。
其中一个AJAX代码:
<script type="text/javascript">
var myRetourboxUn;
function RechercherInterventionboxUn()
{
myRetourboxUn = $.ajax({
type: "POST",
timeout: 30000,
cache: false,
url: "/TestAsynch/InterventionRecherche.asmx/HelloWorld",
data: ({}),
dataType: "text",
beforeSend: function(){
$("#tdboxUn").children(".divContenu").hide();
$("#tdboxUn").children(".divChargement").show();
}
}).done(function(msg){
$("#tdboxUn").children(".divContenu").show();
$("#tdboxUn").children(".divChargement").hide();
$("#tdboxUn").children(".divContenu").html("--" + msg);
}).fail(function(jqXHR, textStatus, errorThrown){
$("#tdboxUn").children(".divContenu").show();
$("#tdboxUn").children(".divChargement").hide();
$("#tdboxUn").children(".divContenu").text(textStatus);
});
$(".menu").click(function(){
myRetourboxUn .abort();
});
}
$(function(){
RechercherInterventionboxUn();
});
$(window).unload(function() {
//myRetourboxUn .abort();
});
</script>
Webservice代码:
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class InterventionRecherche
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Dim aTemps As DateTime = DateTime.Now
Dim aTest As Integer = 1
Do While aTest < 100000000
aTest += 1
Loop
Return (DateTime.Now - aTemps).ToString
End Function
<WebMethod()> _
Public Function HelloWorld3() As String
Dim aTemps As DateTime = DateTime.Now
Dim aTest As Integer = 1
Do While aTest < 100000000
aTest += 1
Loop
Return (DateTime.Now - aTemps).ToString
End Function
End Class
2)当我想刷新页面时,它会一直保持冻结状态,直到完成所有请求。卸载页面时如何判断不等待并自动中止请求?
显然,此行为特定于IE,因为在Chrome中,当您想要更改页面时不会出现任何问题。请求错误到达,然后立即重新加载页面
感谢。
答案 0 :(得分:0)
我终于找到了一个解决方案。 对于第一部分,Internet Explorer 8&amp; 9只授权与同一服务器的6个并发连接,与其他浏览器相同但可能以另一种方式,因为我的问题在Chrome上不存在... Max parallel http connections in a browser?
对于第二部分,只需几个代码就可以在您想要更改页面时中止每个调用:
$(window).bind('beforeunload', function(){
myretourboxun.abort();
});