From c11e31acf3a592b8560459469ae4acf0e6e5dfd4 Mon Sep 17 00:00:00 2001 From: Azul Date: Thu, 23 Mar 2017 16:35:42 +0100 Subject: fix: display error js responses in dev environment Sometimes the dev environment will send back a plain text response. This causes the json parser to raise an exception and used to cause the browser not to display any error message. Now we dumpt the whole server response - which happes to also include the backtrace. A lot more useful than doing nothing. In production this should never happen as 500s get handled by the ExceptionApplication / our ErrorsController there. --- app/assets/javascripts/leap.js | 2 +- app/assets/javascripts/srp/src/jqueryRest.js | 15 +++++++++++---- app/assets/javascripts/users.js | 6 +++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/leap.js b/app/assets/javascripts/leap.js index c8fbcf5..c12a2d6 100644 --- a/app/assets/javascripts/leap.js +++ b/app/assets/javascripts/leap.js @@ -3,7 +3,7 @@ // add a bootstrap alert to the page via javascript. // function alert_message(msg) { - $('#messages').append('
×'+msg+'
'); + $('#messages').append('
×
'+msg+'
'); } ClientSideValidations.formBuilders['SimpleForm::FormBuilder'].wrappers.bootstrap = ClientSideValidations.formBuilders['SimpleForm::FormBuilder'].wrappers["default"]; diff --git a/app/assets/javascripts/srp/src/jqueryRest.js b/app/assets/javascripts/srp/src/jqueryRest.js index 0c58eb2..437bd65 100644 --- a/app/assets/javascripts/srp/src/jqueryRest.js +++ b/app/assets/javascripts/srp/src/jqueryRest.js @@ -88,10 +88,17 @@ srp.remote = (function(){ // the http error response. function error(xhr, text, thrown) { - if (xhr.responseText && xhr.responseText != "") - srp.error($.parseJSON(xhr.responseText)); - else - srp.error("Server did not respond."); + var message; + if (xhr.responseText && xhr.responseText != "") { + try { + message = $.parseJSON(xhr.responseText); + } catch (err) { + message = xhr.responseText; + } + } else { + message = "Server did not respond."; + } + srp.error(message); }; return { diff --git a/app/assets/javascripts/users.js b/app/assets/javascripts/users.js index 3dae526..4b5198f 100644 --- a/app/assets/javascripts/users.js +++ b/app/assets/javascripts/users.js @@ -151,11 +151,11 @@ } function extractErrors(message) { - if ($.isPlainObject(message) && message.errors) { - return message.errors; + if ($.isPlainObject(message)) { + return message.errors || { base: message.error }; } else { return { - base: (message.error || JSON.stringify(message)) + base: message }; } } -- cgit v1.2.3