可以在jquery ajax中设置什么是最大超时?

$.ajax( url:"", async: true, timeout: 2*60*60*1000, //2 hours, success: function(){}, error: function(){} ); 

在jQuery ajax请求中,如果我使用较大的值设置超时,或者将其保留为空,是否会一直等到服务器返回结果?

实际上,我希望服务器会在1.5小时内响应,所以在我的js脚本中我将超时设置为2小时,但我发现Ajax在不到1小时内跳转到错误函数(带有msg代码404)。 这意味着ajax会提前中止等待。

所以我想知道是否有最大超时值可以设置ajax?

我之前的回答是错误的(超时似乎是短暂的,我自己也不敢相信)所以我昨天做了一个测试,创建了1GB zip然后限制了我与fiddler的连接并编写了这个aspx页面。

 public partial class Ajaxtest : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Clear(); Response.BufferOutput = false; Response.WriteFile("c://OnTheMoveOffline.zip"); } } 

然后我运行了这个脚本(有趣的是,fiddler在10秒内爆炸了OutOfMemoryexception,但仍然保持了响应)。

 var f = function(){ var compareDate = new Date(); $.ajax({ url : 'http://localhost:22037/FeatureDev/Ajaxtest.aspx', success: function(data){ console.log(Math.abs(new Date() - compareDate));}, error : function(e){ console.log(Math.abs(new Date() - compareDate));}, timeout : 10000000 }).done(function() { console.log(Math.abs(new Date() - compareDate)); }) .fail(function() { console.log(Math.abs(new Date() - compareDate)); }) .always(function() { console.log(Math.abs(new Date() - compareDate)); });} 

它回来了

 9393076 9393081 9393081 

9393076/1000~9393(s)= 02:36:33

这相当于~156分钟。

我将在本周末重复这个测试,以确定它是否会在相同的时间后超时,但到目前为止它似乎超过7200000(2 * 60 * 60 * 1000)。

timeout默认全局值为0表示它是无限的。