Добавлен заголовок в PHP-код и ловушка в Ajax, но все равно без радости.
У меня возникли проблемы с обработкой ошибок MySQL при использовании Ajax для обработки отправки форм. У меня есть следующий код:
var url = "save.php"; // the script where you handle the form input.
$.ajax({
type: "POST",
url: url,
data: $("#frmSurvey").serialize(), // serializes the form's elements.
success: function(jqXHR, textStatus, errorThrown){
$('.sequence-container div').hide().delay( 2000 );
$next.show().delay( 2000 );
},
error: function(jqXHR, textStatus, errorThrown){
if (jqXHR.status === 0) {
alert('Not connect.\n Verify Network.');
} else if (jqXHR.status == 503) {
alert('Error: ' + jqHXR.responseText);
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404] - Click \'OK\' and try to re-submit your responses - if this error box re-appears, call 01255 850051 and we will assist.');
} else if (jqXHR.status == 500) {
alert('Internal Server Error. [500] - Click \'OK\' and try to re-submit your responses - if this error box re-appears, call 01255 850051 and we will assist');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed - Click \'OK\' and try to re-submit your responses - if this error box re-appears, call 01255 850051 and we will assist');
} else if (exception === 'timeout') {
alert('Time out error - Click \'OK\' and try to re-submit your responses - if this error box re-appears, call 01255 850051 and we will assist');
} else if (exception === 'abort') {
alert('Ajax request aborted - Click \'OK\' and try to re-submit your responses - if this error box re-appears, call 01255 850051 and we will assist');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText + ' - Click \'OK\' and try to re-submit your responses - if this error box re-appears, call 01255 850051 and we will assist');
}
}
});
Это отлично работает и обрабатывает любые ошибки, такие как отсутствие страниц и т. д.
Тем не менее, я совершенно не понимаю, как затем обрабатывать/отображать пользователю любые ошибки, которые могут возникнуть при фактической отправке в базу данных.
В настоящее время я пробовал это:
if ($mysql_error!="") {
header('HTTP/1.1 503 Service Unavailable');
printf("Unexpected database error: %s\n", $mysql_error);
mysqli_stmt_close($proc);
mysqli_clean_connection($link);
exit();
}
Но поскольку страница не отображается (поскольку она отправляется Ajax), сообщение об ошибке не появляется. Я думаю, что мне нужно вернуть это сообщение об ошибке в сценарий Ajax, чтобы отобразить его пользователю (правильно ли это?) - и я не уверен, как это сделать.
Любые указатели/предложения?