You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/08/01 15:36:00 UTC

[3/5] git commit: WICKET-4674 Add support for Ajax call listsners for multipart form submittion

WICKET-4674 Add support for Ajax call listsners for multipart form submittion

Improve the failure handling in case iframe's document cannot be read, for example when the server returns error status.

The problem has been caught on IE7.


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/97a1d692
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/97a1d692
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/97a1d692

Branch: refs/heads/master
Commit: 97a1d6922793bc65905d9f7a886c1d243bdc8d4f
Parents: 2678748
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Aug 1 13:23:03 2012 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Aug 1 16:35:17 2012 +0300

----------------------------------------------------------------------
 .../wicket/ajax/res/js/wicket-ajax-jquery.js       |   31 ++++++++++-----
 1 files changed, 21 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/97a1d692/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index bb54cf0..58cebdc 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@ -799,16 +799,9 @@
 		 */
 		handleMultipartComplete: function (event) {
 
-			var iframe = event.target;
-
-			var envelope = iframe.contentWindow.document;
-			if (envelope.XMLDocument) {
-				envelope = envelope.XMLDocument;
-			}
-
-			// process the response
-			var context = event.data;
-			this.loadedCallback(envelope, context);
+			var context = event.data,
+				iframe = event.target,
+				envelope;
 
 			// stop the event
 			event.stopPropagation();
@@ -816,6 +809,24 @@
 			// remove the event
 			jQuery(iframe).off("load.handleMultipartComplete");
 
+			try {
+				envelope = iframe.contentWindow.document;
+			} catch (e) {
+				Wicket.Log.error("Cannot read Ajax response for multipart form submit: " + e);
+			}
+
+			if (typeof(envelope) === 'undefined') {
+				this.failure(context, null, "No XML response in the IFrame document", "Failure");
+			}
+			else {
+				if (envelope.XMLDocument) {
+					envelope = envelope.XMLDocument;
+				}
+
+				// process the response
+				this.loadedCallback(envelope, context);
+			}
+
 			context.steps.push(jQuery.proxy(function(notify) {
 				// remove the iframe and button elements
 				jQuery('#'+iframe.id + '-btn').remove();