This is slightly OT for which I apologise in advance, but I was wondering if anyone here has had any problems when making multiple ajax calls at the same time. I''m working on a large Intranet application which makes heavy use of ajax calls and the bugs are flying in from the testers that if they repeatedly click on a link that makes an ajax call then Internet Explorer can fall over. Obviously I''m making fixes to get around this by disabling the links while the calls are made to stop this but it seems that the way XMLHTTP works in IE and Mozilla is quite different. If a lot of calls are made with IE it seems to try to make them straight away which can cause problems. FireFox on the other hand seems to wait and make the calls sequentially which can take some time, but at least works. I was wondering if anyone else here had noticed anything similar and, if so, if you''d come up with anyway of stopping IE trying to make too many calls at once. Eifion
afaik firefox has a limit of 2 concurrent xmlhttp requests and ie not ... you could build a sort of queue for your requests (queueing ajax requests if active request count > 2 or sth else) hth 2006/1/30, Eifion <eifs-FhtRXb7CoQBt1OO0OYaSVA@public.gmane.org>:> > This is slightly OT for which I apologise in advance, but I was > wondering if anyone here has had any problems when making multiple > ajax calls at the same time. I''m working on a large Intranet > application which makes heavy use of ajax calls and the bugs are > flying in from the testers that if they repeatedly click on a link > that makes an ajax call then Internet Explorer can fall over. > Obviously I''m making fixes to get around this by disabling the links > while the calls are made to stop this but it seems that the way > XMLHTTP works in IE and Mozilla is quite different. If a lot of calls > are made with IE it seems to try to make them straight away which can > cause problems. FireFox on the other hand seems to wait and make the > calls sequentially which can take some time, but at least works. > > I was wondering if anyone else here had noticed anything similar and, > if so, if you''d come up with anyway of stopping IE trying to make too > many calls at once. > > Eifion > _______________________________________________ > Rails-spinoffs mailing list > Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs >-- Mit freundlichen Grüßen Siegfried Puchbauer _______________________________________________ Rails-spinoffs mailing list Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs
I have written this small script for queuing ajax calls. Hope this helps. //--------------------------------------------------------------------- var AjaxQueue = { batchSize: 1, urlQueue: [], elementsQueue: [], optionsQueue: [], setBatchSize: function(bSize){ this.batchSize = bSize; }, push: function(url, options, elementID){ this.urlQueue.push(url); this.optionsQueue.push(options); if(elementID!=null){ this.elementsQueue.push(elementID); } else { this.elementsQueue.push("NOTSPECIFIED"); } this.processNext(); }, processNext: function() { if(Ajax.activeRequestCount < AjaxQueue.batchSize) { if(AjaxQueue.elementsQueue.first()=="NOTSPECIFIED") { new Ajax.Request(AjaxQueue.urlQueue.shift(), AjaxQueue.optionsQueue.shift()); var junk = AjaxQueue.elementsQueue.shift(); } else { new Ajax.Updater(AjaxQueue.elementsQueue.shift(), AjaxQueue.urlQueue.shift(), AjaxQueue.optionsQueue.shift()); } } } }; Ajax.Responders.register({ onComplete: AjaxQueue.processNext }); //------------------------------------------------------------------------ All the ajax calls should be pushed into the queue. You can set a batch size ie the no.of simultaneous ajax calls to be processed. Usage: Ex: AjaxQueue.setBatchSize(2); -----Original Message----- From: rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org [mailto:rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org]On Behalf Of Eifion Sent: Monday, January 30, 2006 5:39 PM To: rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org Subject: [Rails-spinoffs] Multiple ajax calls This is slightly OT for which I apologise in advance, but I was wondering if anyone here has had any problems when making multiple ajax calls at the same time. I''m working on a large Intranet application which makes heavy use of ajax calls and the bugs are flying in from the testers that if they repeatedly click on a link that makes an ajax call then Internet Explorer can fall over. Obviously I''m making fixes to get around this by disabling the links while the calls are made to stop this but it seems that the way XMLHTTP works in IE and Mozilla is quite different. If a lot of calls are made with IE it seems to try to make them straight away which can cause problems. FireFox on the other hand seems to wait and make the calls sequentially which can take some time, but at least works. I was wondering if anyone else here had noticed anything similar and, if so, if you''d come up with anyway of stopping IE trying to make too many calls at once. Eifion _______________________________________________ Rails-spinoffs mailing list Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs
Adding requests to the queue: AjaxQueue.push(url, options); // for Ajax.request AjaxQueue.push(url, options, elementId); // for Ajax.updater calls Default batch size is 1. -----Original Message----- From: rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org [mailto:rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org]On Behalf Of Irfan, Ghouseuddin Syed Sent: Monday, January 30, 2006 5:57 PM To: rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org Subject: RE: [Rails-spinoffs] Multiple ajax calls I have written this small script for queuing ajax calls. Hope this helps. //--------------------------------------------------------------------- var AjaxQueue = { batchSize: 1, urlQueue: [], elementsQueue: [], optionsQueue: [], setBatchSize: function(bSize){ this.batchSize = bSize; }, push: function(url, options, elementID){ this.urlQueue.push(url); this.optionsQueue.push(options); if(elementID!=null){ this.elementsQueue.push(elementID); } else { this.elementsQueue.push("NOTSPECIFIED"); } this.processNext(); }, processNext: function() { if(Ajax.activeRequestCount < AjaxQueue.batchSize) { if(AjaxQueue.elementsQueue.first()=="NOTSPECIFIED") { new Ajax.Request(AjaxQueue.urlQueue.shift(), AjaxQueue.optionsQueue.shift()); var junk = AjaxQueue.elementsQueue.shift(); } else { new Ajax.Updater(AjaxQueue.elementsQueue.shift(), AjaxQueue.urlQueue.shift(), AjaxQueue.optionsQueue.shift()); } } } }; Ajax.Responders.register({ onComplete: AjaxQueue.processNext }); //------------------------------------------------------------------------ All the ajax calls should be pushed into the queue. You can set a batch size ie the no.of simultaneous ajax calls to be processed. Usage: Ex: AjaxQueue.setBatchSize(2); -----Original Message----- From: rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org [mailto:rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org]On Behalf Of Eifion Sent: Monday, January 30, 2006 5:39 PM To: rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org Subject: [Rails-spinoffs] Multiple ajax calls This is slightly OT for which I apologise in advance, but I was wondering if anyone here has had any problems when making multiple ajax calls at the same time. I''m working on a large Intranet application which makes heavy use of ajax calls and the bugs are flying in from the testers that if they repeatedly click on a link that makes an ajax call then Internet Explorer can fall over. Obviously I''m making fixes to get around this by disabling the links while the calls are made to stop this but it seems that the way XMLHTTP works in IE and Mozilla is quite different. If a lot of calls are made with IE it seems to try to make them straight away which can cause problems. FireFox on the other hand seems to wait and make the calls sequentially which can take some time, but at least works. I was wondering if anyone else here had noticed anything similar and, if so, if you''d come up with anyway of stopping IE trying to make too many calls at once. Eifion _______________________________________________ Rails-spinoffs mailing list Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs _______________________________________________ Rails-spinoffs mailing list Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs
Thanks. I''ll have a look at this. Eifion On 30 Ion 2006, at 12:27, Irfan, Ghouseuddin Syed wrote:> I have written this small script for queuing ajax calls. Hope this > helps. > > //-------------------------------------------------------------------- > - > var AjaxQueue = { > batchSize: 1, > urlQueue: [], > elementsQueue: [], > optionsQueue: [], > setBatchSize: function(bSize){ > this.batchSize = bSize; > }, > push: function(url, options, elementID){ > this.urlQueue.push(url); > this.optionsQueue.push(options); > if(elementID!=null){ > this.elementsQueue.push(elementID); > } else { > this.elementsQueue.push("NOTSPECIFIED"); > } > > this.processNext(); > }, > processNext: function() { > if(Ajax.activeRequestCount < AjaxQueue.batchSize) > { > if(AjaxQueue.elementsQueue.first()=="NOTSPECIFIED") { > new Ajax.Request(AjaxQueue.urlQueue.shift(), > AjaxQueue.optionsQueue.shift()); > var junk = AjaxQueue.elementsQueue.shift(); > } else { > new Ajax.Updater(AjaxQueue.elementsQueue.shift(), > AjaxQueue.urlQueue.shift(), AjaxQueue.optionsQueue.shift()); > } > > } > } > }; > Ajax.Responders.register({ > onComplete: AjaxQueue.processNext > }); > > //-------------------------------------------------------------------- > ---- > > All the ajax calls should be pushed into the queue. You can set a > batch size ie the no.of simultaneous ajax calls to be processed. > > Usage: > Ex: AjaxQueue.setBatchSize(2); > > > > > -----Original Message----- > From: rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > [mailto:rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org]On Behalf Of > Eifion > Sent: Monday, January 30, 2006 5:39 PM > To: rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > Subject: [Rails-spinoffs] Multiple ajax calls > > > This is slightly OT for which I apologise in advance, but I was > wondering if anyone here has had any problems when making multiple > ajax calls at the same time. I''m working on a large Intranet > application which makes heavy use of ajax calls and the bugs are > flying in from the testers that if they repeatedly click on a link > that makes an ajax call then Internet Explorer can fall over. > Obviously I''m making fixes to get around this by disabling the links > while the calls are made to stop this but it seems that the way > XMLHTTP works in IE and Mozilla is quite different. If a lot of calls > are made with IE it seems to try to make them straight away which can > cause problems. FireFox on the other hand seems to wait and make the > calls sequentially which can take some time, but at least works. > > I was wondering if anyone else here had noticed anything similar and, > if so, if you''d come up with anyway of stopping IE trying to make too > many calls at once. > > Eifion > _______________________________________________ > Rails-spinoffs mailing list > Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs > _______________________________________________ > Rails-spinoffs mailing list > Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs
Code for AjaxQueue with example usage: var AjaxQueue = { batchSize: 1, //No.of simultaneous AJAX requests allowed, Default : 1 urlQueue: [], //Request URLs will be pushed into this array elementsQueue: [], //Element IDs of elements to be updated on completion of a request ( as in Ajax.Updater ) optionsQueue: [], //Request options will be pushed into this array setBatchSize: function(bSize){ //Method to set a different batch size. Recommended: Set batchSize before making requests this.batchSize = bSize; }, push: function(url, options, elementID){ //Push the request in the queue. elementID is optional and required only for Ajax.Updater calls this.urlQueue.push(url); this.optionsQueue.push(options); if(elementID!=null){ this.elementsQueue.push(elementID); } else { this.elementsQueue.push("NOTSPECIFIED"); } this._processNext(); }, _processNext: function() { // Method for processing the requests in the queue. Private method. Don''t call it explicitly if(Ajax.activeRequestCount < AjaxQueue.batchSize) // Check if the currently processing request count is less than batch size { if(AjaxQueue.elementsQueue.first()=="NOTSPECIFIED") { //Check if an elementID was specified // Call Ajax.Request if no ElementID specified //Call Ajax.Request on the first item in the queue and remove it from the queue new Ajax.Request(AjaxQueue.urlQueue.shift(), AjaxQueue.optionsQueue.shift()); var junk = AjaxQueue.elementsQueue.shift(); } else { // Call Ajax.Updater if an ElementID was specified. //Call Ajax.Updater on the first item in the queue and remove it from the queue new Ajax.Updater(AjaxQueue.elementsQueue.shift(), AjaxQueue.urlQueue.shift(), AjaxQueue.optionsQueue.shift()); } } } }; Ajax.Responders.register({ //Call AjaxQueue._processNext on completion ( success / failure) of any AJAX call. onComplete: AjaxQueue._processNext }); /************* SYNTAX *************** AjaxQueue.setBatchSize(size); AjaxQueue.push(URL , OPTIONS, [ElementID]); ************** USAGE *************** AjaxQueue.setBatchSize(4); AjaxQueue.push("http://www.testingqueue.com/process/",{onSucess: funcSuccess, onfailure: funcFailure}); AjaxQueue.push("http://www.testingqueue.com/process1/",{onSucess: funcSuccess1, onfailure: funcFailure1}, "myDiv"); AjaxQueue.push("http://www.testingqueue.com/process2/",{onSucess: funcSuccess2, onfailure: funcFailure2}); AjaxQueue.push("http://www.testingqueue.com/process3/",{onSucess: funcSuccess3, onfailure: funcFailure3}); AjaxQueue.push("http://www.testingqueue.com/process4/",{onSucess: funcSuccess4, onfailure: funcFailure4}); AjaxQueue.push("http://www.testingqueue.com/process5/",{onSucess: funcSuccess5, onfailure: funcFailure5}); **********************************/ -----Original Message----- From: rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org [mailto:rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org]On Behalf Of Eifion Sent: Monday, January 30, 2006 6:12 PM To: rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org Subject: Re: [Rails-spinoffs] Multiple ajax calls Thanks. I''ll have a look at this. Eifion On 30 Ion 2006, at 12:27, Irfan, Ghouseuddin Syed wrote:> I have written this small script for queuing ajax calls. Hope this > helps. > > //-------------------------------------------------------------------- > - > var AjaxQueue = { > batchSize: 1, > urlQueue: [], > elementsQueue: [], > optionsQueue: [], > setBatchSize: function(bSize){ > this.batchSize = bSize; > }, > push: function(url, options, elementID){ > this.urlQueue.push(url); > this.optionsQueue.push(options); > if(elementID!=null){ > this.elementsQueue.push(elementID); > } else { > this.elementsQueue.push("NOTSPECIFIED"); > } > > this.processNext(); > }, > processNext: function() { > if(Ajax.activeRequestCount < AjaxQueue.batchSize) > { > if(AjaxQueue.elementsQueue.first()=="NOTSPECIFIED") { > new Ajax.Request(AjaxQueue.urlQueue.shift(), > AjaxQueue.optionsQueue.shift()); > var junk = AjaxQueue.elementsQueue.shift(); > } else { > new Ajax.Updater(AjaxQueue.elementsQueue.shift(), > AjaxQueue.urlQueue.shift(), AjaxQueue.optionsQueue.shift()); > } > > } > } > }; > Ajax.Responders.register({ > onComplete: AjaxQueue.processNext > }); > > //-------------------------------------------------------------------- > ---- > > All the ajax calls should be pushed into the queue. You can set a > batch size ie the no.of simultaneous ajax calls to be processed. > > Usage: > Ex: AjaxQueue.setBatchSize(2); > > > > > -----Original Message----- > From: rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > [mailto:rails-spinoffs-bounces-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org]On Behalf Of > Eifion > Sent: Monday, January 30, 2006 5:39 PM > To: rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > Subject: [Rails-spinoffs] Multiple ajax calls > > > This is slightly OT for which I apologise in advance, but I was > wondering if anyone here has had any problems when making multiple > ajax calls at the same time. I''m working on a large Intranet > application which makes heavy use of ajax calls and the bugs are > flying in from the testers that if they repeatedly click on a link > that makes an ajax call then Internet Explorer can fall over. > Obviously I''m making fixes to get around this by disabling the links > while the calls are made to stop this but it seems that the way > XMLHTTP works in IE and Mozilla is quite different. If a lot of calls > are made with IE it seems to try to make them straight away which can > cause problems. FireFox on the other hand seems to wait and make the > calls sequentially which can take some time, but at least works. > > I was wondering if anyone else here had noticed anything similar and, > if so, if you''d come up with anyway of stopping IE trying to make too > many calls at once. > > Eifion > _______________________________________________ > Rails-spinoffs mailing list > Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs > _______________________________________________ > Rails-spinoffs mailing list > Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs_______________________________________________ Rails-spinoffs mailing list Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs