注意:使用的Extjs版本为4.2.1
本人在程序中有个store使用了AjaxProxy,先看看“愚蠢”的代码:
var chartstore = Ext.create("Ext.data.Store",{ model: "ChartModel",proxy: { type: "ajax",timeout: Number.MAX_VALUE,//这个程序是大量数据分析,所以我随手就设了这个最大值 url: "XXX/Data",reader: { type: "json",root: "data" } },autoLoad: true,listeners: { beforeload:function(store,operation,eOpts){ },load:function(chartstore,records,successful,eOpts){ } } });
Web程序是用来像服务器请求大数据处理的结果,由于有的时候数据量会很庞大,所以我修改了AjaxProxy的响应等待延迟时间配置"timeou",随手就改成Ext Number的最大值。上述代码在opera中执行获取数据没有问题,IE和Firefox均无法获取,而且是未经任何处理延迟直接被阻止的感觉。在firebug中可以看到以下错误信息:
一开始没有想到是timeout的问题,不过找到了一个stackoverflow提问,链接:http://stackoverflow.com/questions/16921101/getting-aborted-error-for-ext-js-4-ajax-request-synchrnous-call,里面说到了timeout过大的问题。于是将timeout值改为84600000(一天的毫秒数)试试,成功。
每个浏览器对于“连接超时时间”应该都有个上界,比如IE的几个版本,http://support.microsoft.com/kb/181050。时间关系暂时先不找了。