/
jquery.periodicalAjax.min.js
12 lines (11 loc) · 1.69 KB
/
jquery.periodicalAjax.min.js
1
2
3
4
5
6
7
8
9
10
11
12
(function($){var PeriodicalChecker=function(url,frequency,ajaxOptions){if(url===undefined||url==null||!url.length)
throw"URL argument is mandatory";if(frequency===undefined)
frequency=10*1000;var self=this;var completeCallback=function(jqXHR,textStatus){self.console.log("Completed call to \""+self.url+"\" ["+textStatus+"]");self.isRunning=false;self.request=null;}
if(typeof(ajaxOptions)=="undefined")
ajaxOptions={};if(ajaxOptions.complete!==undefined){var oldComplete=ajaxOptions.complete;ajaxOptions.complete=function(jqXHR,textStatus){oldComplete(jqXHR,textStatus);completeCallback(jqXHR,textStatus);};}else{ajaxOptions.complete=completeCallback;}
this.ajaxOptions=ajaxOptions;this.frequency=frequency;this.isRunning=false;this.url=url;this.callInterval=-1;if(window.console!==undefined){this.console=window.console;}else{this.console={log:function(){},error:function(){},warn:function(){}};}
this.request=null;};PeriodicalChecker.prototype.start=function(){var self=this;this.callInterval=setInterval(function(){self.runOnce();},this.frequency);};PeriodicalChecker.prototype.runOnce=function(){if(this.isRunning){return;}
this.console.log("Calling ajax to "+this.url);this.isRunning=true;this.ajaxOptions.url=this.url;this.request=$.ajax(this.ajaxOptions);};PeriodicalChecker.prototype.stop=function(){this.callInterval=clearTimeout(this.callInterval);if(this.request!==undefined&&this.request!=null){if(typeof(this.request.reject)=="function")
this.request.reject();else if(typeof(this.request.abort)=="function")
this.request.abort();}
this.isRunning=false;};$.periodicalAjax=function(url,ajax_options,frequency){var runner=new PeriodicalChecker(url,ajax_options,frequency);runner.start();return runner;};})(jQuery);