Author: lgiessmann Date: Thu Jun 18 09:29:56 2009 New Revision: 46
Log: ajax-client: all ajax-requests have a timeout depending on the data to be commited or requested - the minimum timeout is set by the constant "TIMEOUT"
Modified: trunk/src/ajax/javascripts/requests.js
Modified: trunk/src/ajax/javascripts/requests.js ============================================================================== --- trunk/src/ajax/javascripts/requests.js (original) +++ trunk/src/ajax/javascripts/requests.js Thu Jun 18 09:29:56 2009 @@ -10,6 +10,29 @@ //+-----------------------------------------------------------------------------
+// --- Sets a timeout function which alerts a message. +function setAjaxTimeout(time, url) +{ + return setTimeout(function(){ + alert("The AJAX request for "" + url + "" timed out. Please check your network connection!"); + }, time); +} + + +// --- Returns a function whihc can be used as an XHR-Handler. +// --- The returned function is the passed handler wrapped in +// --- a lambda-function which additionally clears the passed timeout +// --- function. +function createXHRHandler(handler, timeFun) +{ + function fun(xhr){ + clearTimeout(timeFun); + handler(xhr); + } + return fun; +} + + // --- This is the default error handler of the used ajax.requests. function defaultFailureHandler(xhr) { @@ -23,12 +46,13 @@ { try{ var onFailure = onFailureHandler ? onFailureHandler : defaultFailureHandler; - + var timeFun = setAjaxTimeout(TIMEOUT, TYPE_PSIS_URL); + new Ajax.Request(TYPE_PSIS_URL, { "method" : "get", "requestHeaders" : ["If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 GMT"], - "onSuccess" : onSuccessHandler, - "onFailure" : onFailure}); + "onSuccess" : createXHRHandler(onSuccessHandler, timeFun), + "onFailure" : createXHRHandler(onFailure, timeFun)}); } catch(err){ alert("Could not request all type PSIs, please try again!\n\n" + err); @@ -42,12 +66,13 @@ { try{ var onFailure = onFailureHandler ? onFailureHandler : defaultFailureHandler; - + var timeFun = setAjaxTimeout(TIMEOUT, TMCL_TYPE_URL); + new Ajax.Request(TMCL_TYPE_URL, { "method" : "post", "postBody" : psis, - "onSuccess" : onSuccessHandler, - "onFailure" : onFailure}); + "onSuccess" : createXHRHandler(onSuccessHandler, timeFun), + "onFailure" : createXHRHandler(onFailure, timeFun)}); } catch(err){ alert("Could not request contraints, please try again!\n\n" + err); @@ -108,17 +133,19 @@ }
+// --- Sends a POST-Message to the server with the fragment data which hast to be committed. function commitFragment(json, onSuccessHandler, onFailureHandler) { if(!json || !onSuccessHandler) throw "From commitFragment(): json and onSuccessHandler must be set!"; try{ var onFailure = onFailureHandler ? onFailureHandler : defaultFailureHandler; + var timeFun = setAjaxTimeout(TIMEOUT, COMMIT_URL); new Ajax.Request(COMMIT_URL, { "method" : "post", "postBody" : json, - "onSuccess" : onSuccessHandler, - "onFailure" : onFailure}); + "onSuccess" : createXHRHandler(onSuccessHandler, timeFun), + "onFailure" : createXHRHandler(onFailure, timeFun)}); } catch(err){ alert("From commitFragment(): " + err);