You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2010/04/19 19:25:31 UTC

svn commit: r935678 - /tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js

Author: hlship
Date: Mon Apr 19 17:25:31 2010
New Revision: 935678

URL: http://svn.apache.org/viewvc?rev=935678&view=rev
Log:
TAP5-1106: Tapestry.ajaxFailureHandler has an incorrect signature for an Ajax.Request onException callback

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js?rev=935678&r1=935677&r2=935678&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js Mon Apr 19 17:25:31 2010
@@ -318,6 +318,16 @@ var Tapestry = {
 	},
 
 	/**
+	 * Default function for handling a communication error during an Ajax
+	 * request.
+	 */
+	ajaxExceptionHander : function(response, exception) {
+		Tapestry.error(Tapestry.Messages.communicationFailed + exception);
+
+		Tapestry.debug(Tapestry.Messages.ajaxFailure + exception, response);
+	},
+
+	/**
 	 * Default function for handling Ajax-related failures.
 	 */
 	ajaxFailureHandler : function(response) {
@@ -333,7 +343,7 @@ var Tapestry = {
 	 * handler is provided (as options). In a more complex case, an options
 	 * object is provided, with keys as per Ajax.Request. The onSuccess key will
 	 * be overwritten, and defaults for onException and onFailure will be
-	 * provided. The handler shoudl take up-to two parameters: the
+	 * provided. The handler should take up-to two parameters: the
 	 * XMLHttpRequest object itself, and the JSON Response (from the X-JSON
 	 * response header, usually null).
 	 * 
@@ -354,7 +364,7 @@ var Tapestry = {
 		var successHandler = options.onSuccess;
 
 		var finalOptions = $H( {
-			onException : Tapestry.ajaxFailureHandler,
+			onException : Tapestry.ajaxExceptionHandler,
 			onFailure : Tapestry.ajaxFailureHandler
 		}).update(options).update( {
 			onSuccess : function(response, jsonResponse) {
@@ -368,7 +378,10 @@ var Tapestry = {
 				if (Tapestry.windowUnloaded)
 					return;
 
-				if (!response.request.success()) {
+				/* Prototype treats status == 0 as success, even though it seems to mean
+				 * the server didn't respond.
+				 */
+				if (!response.getStatus() || !response.request.success()) {
 					Tapestry.error(Tapestry.Messages.ajaxRequestUnsuccessful);
 					return;
 				}
@@ -377,12 +390,14 @@ var Tapestry = {
 					/* Re-invoke the success handler, capturing any exceptions. */
 					successHandler.call(this, response, jsonResponse);
 				} catch (e) {
-					Tapestry.error(Tapestry.Messages.clientException + e);
+					finalOptions.onException.call(this, ajaxRequest, e);
 				}
 			}
 		});
 
-		return new Ajax.Request(url, finalOptions.toObject());
+		var ajaxRequest = new Ajax.Request(url, finalOptions.toObject());
+
+		return ajaxRequest;
 	},
 
 	/**