#javascript #php #json #ajax #error-handling
Вопрос:
Я не так хорошо разбираюсь в разработке серверной части, но у меня есть небольшая задача добавить некоторую обработку ошибок в код, который вы видите ниже. Все, что я хочу сделать, это отобразить возможные ответы на ошибки в теге #результаты, если они возникнут. Это должно быть только что-то базовое, так как сам код в любом случае должен оставлять очень мало места для возникновения ошибок. Любая помощь была бы очень признательна. Дайте мне знать, если у вас возникнут какие-либо вопросы. Спасибо за вашу помощь.
$('#hierarchyBtn').click(function() {
$.ajax({
url: "libs/php/getHierarchy.php",
type: 'POST',
dataType: 'json',
data: {
geonameId: $('#selHieGeonameId').val(),
},
success: function(result) {
console.log(JSON.stringify(result));
if (result.status.name == "ok") {
var names = result['data'].map(function(geoname){return geoname.toponymName}).join(", ");
$('#results').text(names);
}
},
error: function(jqXHR, textStatus, errorThrown) {
// my error code
}
});
});
Комментарии:
1. Итак, что вам нужно, это отобразить ошибку, полученную от сервера внутри
#results
элемента?2. Да, это то, чего я хочу достичь. Я не выполняю никакой работы по обработке ошибок, поэтому мне нужен бит кода, который обработает любую ошибку. А также отобразите ошибку в теге #результаты.
3. Обработка ошибок зависит от вашей цели, какая обработка ошибок вам нужна? Для того, чтобы отобразить ошибку в
#results
теге, вы могли бы сделать что-то похожее на то, что вы сделали в случае успеха.
Ответ №1:
Если ошибка, которую вы хотите отобразить, возвращается вами, например, для проверки, вы можете получить доступ к сообщению об ошибке в функции обратного вызова error (), но передать ошибки в качестве параметра и получить доступ к нему с помощью сообщения errors.message.
Я буду отображать общую ошибку для всех ошибок, не связанных с проверкой, и ошибку проверки, если таковая имеется, но это зависит от того, что вам, по сути, нужно, чтобы поймать ошибки, которые вы сами выбросили, и отобразить общую ошибку для чего-либо еще, может быть, не идеально, но работает
error: function(error) {
// my error code
if(error.statusCode !== 412) {
$('#results').text('A Generic error occured on the server')
}
// Validation error
if (error.statusCode === '412') {
$('#results').text(error.message);
// or $('#results').text(error.errorName)
}
}