From 4a7f905c6aaa93b4c7160e9c99fced3001189037 Mon Sep 17 00:00:00 2001
From: Matt Friedman <maf675@gmail.com>
Date: Tue, 21 Apr 2015 00:19:41 -0700
Subject: [PATCH 1/2] [ticket/13771] Allow AJAX errors to support exceptions
 messages

PHPBB3-13771
---
 phpBB/assets/javascript/core.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/phpBB/assets/javascript/core.js b/phpBB/assets/javascript/core.js
index 806db7d35f..33f4021cb9 100644
--- a/phpBB/assets/javascript/core.js
+++ b/phpBB/assets/javascript/core.js
@@ -263,7 +263,11 @@ phpbb.ajaxify = function(options) {
 			}
 			phpbb.clearLoadingTimeout();
 			var errorText = false;
-			if (typeof errorThrown === 'string' && errorThrown.length > 0) {
+			var responseText = $.parseJSON(jqXHR.responseText);
+			if (typeof responseText.message === 'string' && responseText.message.length > 0) {
+				errorText = responseText.message;
+			}
+			else if (typeof errorThrown === 'string' && errorThrown.length > 0) {
 				errorText = errorThrown;
 			}
 			else {

From c7a0b4479d2e4cfeefbfd951e499fc20da4051c4 Mon Sep 17 00:00:00 2001
From: Matt Friedman <maf675@gmail.com>
Date: Mon, 4 May 2015 10:27:11 -0700
Subject: [PATCH 2/2] [ticket/13771] Only handle valid JQHXR response objects

PHPBB3-13771
---
 phpBB/assets/javascript/core.js | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/phpBB/assets/javascript/core.js b/phpBB/assets/javascript/core.js
index 33f4021cb9..bd791e668c 100644
--- a/phpBB/assets/javascript/core.js
+++ b/phpBB/assets/javascript/core.js
@@ -262,10 +262,13 @@ phpbb.ajaxify = function(options) {
 				console.log('AJAX error. status: ' + textStatus + ', message: ' + errorThrown);
 			}
 			phpbb.clearLoadingTimeout();
-			var errorText = false;
-			var responseText = $.parseJSON(jqXHR.responseText);
-			if (typeof responseText.message === 'string' && responseText.message.length > 0) {
-				errorText = responseText.message;
+			var responseText, errorText = false;
+			try {
+				responseText = JSON.parse(jqXHR.responseText);
+				responseText = responseText.message;
+			} catch (e) {}
+			if (typeof responseText === 'string' && responseText.length > 0) {
+				errorText = responseText;
 			}
 			else if (typeof errorThrown === 'string' && errorThrown.length > 0) {
 				errorText = errorThrown;