Я делаю вызов ajax для удаления записи SQL. Если запись найдена и удалена, я возвращаю код HTTP 200 с сообщением, что запись была удалена. Поэтому он переходит в раздел .done и печатает мое сообщение вместе с DONE. В случае, запись не найдена, я хочу перейти в раздел .fail, поэтому я возвращаю HTTP-код 400 с моим сообщением, что запись не была найдена. Он печатает ОШИБКА, но сообщение всегда пустое. Если я проверяю возвращение вызова Ajax в консоли хрома я вижу мое сообщение с кодом 400.Пустой отклик на ошибку в ajax .post call
$.post('ajax/project.php', data)
.fail(function(res) {
$("#info").html("ERROR");
})
.done(function(res) {
$("#info").html("DONE");
})
.always(function(res) {
$("#debug").html(res);
});
Любым решением бросить ошибку, чтобы перейти в .fail но с получением моего сообщения об ошибке ? Я через ошибки, как это:
function myError($msg, $code=200, $die=true) {
http_response_code($code);
echo $msg;
if($die)
die();
}
Мой вызов myError выглядит следующим образом:
if(!$stmt->affected_rows)
myError('Project #'.$pid.' not found', 400);
Edit2: Как вы можете видеть на скриншоте ниже, с кодом 200 HTTP это просто возвращает мое сообщение, в HTTP-код 400 он возвращает мое сообщение в объекте. Похоже, мне нужно сделать обходной путь, чтобы поймать как возможные возвращения, но я не совсем понимаю, почему он действует иначе.
Edit1: Только что узнал, если я предупредит результат с оповещения (Рез); в .всегда раздел Я получаю [object Object] в случае ошибки вместо моего сообщения.
откуда вы звоните функцию myError – brk
@ user2181397 'если (! $ Stmt-> affected_rows) myError ('Project #'. $ Pid. 'Not found', 400); ' – SoS