diff --git a/js/utils.js b/js/utils.js index 138d8b31a..cab6d185e 100644 --- a/js/utils.js +++ b/js/utils.js @@ -538,8 +538,25 @@ function ExportStartExport() oParams.query = $('#export-form :input[name=query]').val(); } $.post(GetAbsoluteUrlAppRoot()+'pages/ajax.render.php', oParams, function(data) { - ExportRun(data); - }, 'json'); + if (data == null) + { + ExportError('Export failed (no data provided), please contact your administrator'); + } + else + { + ExportRun(data); + } + }, 'json') + .fail(function() { + ExportError('Export failed, please contact your administrator'); + }); +} + +function ExportError(sMessage) +{ + $('.export-message').html(sMessage); + $('.export-progress-bar').hide(); + $('#export-btn').hide(); } function ExportRun(data) diff --git a/pages/ajax.render.php b/pages/ajax.render.php index c14926643..31ec1f54c 100644 --- a/pages/ajax.render.php +++ b/pages/ajax.render.php @@ -2066,6 +2066,15 @@ EOF break; case 'export_build': + register_shutdown_function(function() + { + $aErr = error_get_last(); + if (($aErr !== null) && ($aErr['type'] & (E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR))) + { + ob_end_clean(); + echo json_encode(array('code' => 'error', 'percentage' => 100, 'message' => Dict::Format('UI:Error_Details', $aErr['message']))); + } + }); try { $token = utils::ReadParam('token', null);