Я не знаю, используете ли вы jQuery или нет. Мой ответ дается, если вы используете jQuery, но вы можете применить ту же концепцию к другой среде JavaScript (или ни к одной). Таким образом, пользователи фактически будут смотреть на трассировку стека вместо общего сообщения об ошибке (которое в любом случае бесполезно):
$.ajax({
url: '/some_url',
type: 'post', //or get
data: ...,
success: function() { /* handle success */ },
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#error_dlg').dialog('open').trigger('initDlg', [XMLHttpRequest]);
}
});
$('#error_dlg').dialog({
autoOpen: false,
width: 550,
height: 400,
modal: true,
buttons: {
'Close': function() {
$(this).dialog('close');
}
},
open: function(event, ui) {
}
}).bind('initDlg', function(e, XMLHttpRequest) {
$('#error_stack_trace').append($('<div>').html(XMLHttpRequest.responseText));
});