diff --git a/IPython/html/static/base/js/utils.js b/IPython/html/static/base/js/utils.js index 5923256..bb903ad 100644 --- a/IPython/html/static/base/js/utils.js +++ b/IPython/html/static/base/js/utils.js @@ -514,15 +514,20 @@ define([ } }; + var ajax_error_msg = function (jqXHR) { + // Return a JSON error message if there is one, + // otherwise the basic HTTP status text. + if (jqXHR.responseJSON && jqXHR.responseJSON.message) { + return jqXHR.responseJSON.message; + } else { + return jqXHR.statusText; + } + } var log_ajax_error = function (jqXHR, status, error) { // log ajax failures with informative messages var msg = "API request failed (" + jqXHR.status + "): "; console.log(jqXHR); - if (jqXHR.responseJSON && jqXHR.responseJSON.message) { - msg += jqXHR.responseJSON.message; - } else { - msg += jqXHR.statusText; - } + msg += ajax_error_msg(jqXHR); console.log(msg); }; @@ -547,6 +552,7 @@ define([ platform: platform, is_or_has : is_or_has, is_focused : is_focused, + ajax_error_msg : ajax_error_msg, log_ajax_error : log_ajax_error, }; diff --git a/IPython/html/static/notebook/js/notebook.js b/IPython/html/static/notebook/js/notebook.js index b4bf734..e22fd51 100644 --- a/IPython/html/static/notebook/js/notebook.js +++ b/IPython/html/static/notebook/js/notebook.js @@ -2286,17 +2286,14 @@ define([ */ Notebook.prototype.load_notebook_error = function (xhr, status, error) { this.events.trigger('notebook_load_failed.Notebook', [xhr, status, error]); + utils.log_ajax_error(xhr, status, error); var msg; if (xhr.status === 400) { - if (xhr.responseJSON && xhr.responseJSON.message) { - msg = escape(xhr.responseJSON.message); - } else { - msg = escape(error); - } + msg = escape(utils.ajax_error_msg(xhr)); } else if (xhr.status === 500) { msg = "An unknown error occurred while loading this notebook. " + "This version can load notebook formats " + - "v" + this.nbformat + " or earlier."; + "v" + this.nbformat + " or earlier. See the server log for details."; } dialog.modal({ notebook: this,