Ajax jqxhr.status === 0
Пишу REST API на node JS для архива книг. В качестве БД-postgreSQL. Для написания запроса delete использовал AJAX:
$(document).ready(function(){
$('.delete-book').on('click', function(){
var id = $(this).data('id');
var url = '/delete/' + id;
console.log("id: "+id);
if(confirm("Are you sure?")){
$.ajax({
url: url,
type: 'DELETE',
success: function(){
console.log("Deleting...");
window.location.href = '/';
},
error: function(jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Not connect.\n Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404]');
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
}
});
});
APP.js:
app.delete('/delete/:id', (req, res) => {
pool.connect((err, client, release) => {
if (err) {
return console.error('Error acquiring client', err.stack)
}
client.query('DELETE FROM "Books" WHERE id = $1', [req.params.id]);
})
});
По итогу: сам запрос отправляется и книга удаляется (что видно после принудительной перезагрузки страницы), но перезагрузка страницы не происходит, в консоли браузера пишет "DELETE http://localhost:3000/delete/46 net::ERR_EMPTY_RESPONSE". Как я выяснил, sucsess вообще не срабатывает, а во вкладке "сеть" браузера запрос две минуты висит со статусом "pending", после чего выдает alert"Not connect. Verify Network", то бишь jqxhr.status === 0. Не могу понять в чем дело.