Как написать основную обработку ошибок при использовании AJAX JSON

#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)
    }
}