From 311e6d7ffdbf5774844c743fae17f09c63f5f584 Mon Sep 17 00:00:00 2001 From: Ari Rizzitano Date: Thu, 1 Dec 2016 09:30:12 -0500 Subject: [PATCH] [studio] fix unformatted html in connection error message (TNL-5818) display default error message for non-json responses (TNL-5818) [studio] log ajax errors. (TNL-5818) [studio] fix failing test (TNL-5818) [cms-test] avoid circular error logging; stub Logger (TNL-5818) [cms-test] fix logger dep in squire config (TNL-5818) [cms-tests] fix logger import (TNL-5818) [cms-test] stub the logger directly in the karma config. (TNL-5818) [studio] didn't need Logger after all (TNL-5818) [studio] ignore console.log (TNL-5818) --- cms/static/cms/js/main.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/cms/static/cms/js/main.js b/cms/static/cms/js/main.js index 219f362a7f..74e654241b 100644 --- a/cms/static/cms/js/main.js +++ b/cms/static/cms/js/main.js @@ -25,23 +25,24 @@ dataType: 'json' }); $(document).ajaxError(function(event, jqXHR, ajaxSettings) { - var message, msg; + var msg, contentType, + message = gettext('This may be happening because of an error with our server or your internet connection. Try refreshing the page or making sure you are online.'); // eslint-disable-line max-len if (ajaxSettings.notifyOnError === false) { return; } - if (jqXHR.responseText) { - try { - message = JSON.parse(jqXHR.responseText).error; - } catch (error) { - message = str.truncate(jqXHR.responseText, 300); - } - } else { - message = gettext('This may be happening because of an error with our server or your internet connection. Try refreshing the page or making sure you are online.'); // eslint-disable-line max-len + contentType = jqXHR.getResponseHeader('content-type'); + if (contentType && contentType.indexOf('json') > -1 && jqXHR.responseText) { + message = JSON.parse(jqXHR.responseText).error; } msg = new NotificationView.Error({ 'title': gettext("Studio's having trouble saving your work"), 'message': message }); + console.log('Studio AJAX Error', { // eslint-disable-line no-console + url: event.currentTarget.URL, + response: jqXHR.responseText, + status: jqXHR.status + }); return msg.show(); }); $.postJSON = function(url, data, callback) {