Создать сообщение об ошибке с http.get, если запись не найдена в AngularJS

0

У меня есть данные заказа, загружающие в мое приложение и заполняющие мои поля, но если я введу неправильный номер заказа, он не выдает ошибку, просто заполняет поля пустой информацией.

$http.get('http://example.com/api' + query).success(function(data) {
    $scope.orders = data;
    console.log($scope.query);
    console.log(data);
    console.log($scope.orders);

Есть много примеров, но без полностью работоспособного кода, может ли кто-нибудь помочь с компиляцией функции http.get, которая будет производить и ошибки, если заказ не соответствует и отображает ошибку "не найдена".

$http.get('http://example.com').then(function(response){
    //the response from the server is now contained in 'response'
}, function(error) {
    //there was an error fetching from the server
});
  • 0
    Я полагаю, что вы должны обработать эту сторону сервера, так как это логическая ошибка, и в настоящее время вы получаете пустые значения с 200 успешными ответами (таким образом, ошибка не выдается). Иначе, вы должны проверить данные в полученном вами ответе и, если не указано, сообщить об этом вашему пользователю или вообще что-то сделать.
  • 0
    Вам нужно либо обработать query переменной и тест с , if , если его все хорошо. В противном случае вы можете просто выдать ошибку на свой бэкэнд, а затем использовать function(error){} .
Показать ещё 1 комментарий
Теги:
xmlhttprequest

3 ответа

0

Производные обещания создаются путем возврата или бросания функций обработчика.

var httpPromise = $http.get('http://example.com');

var derivedPromise = httpPromise.then( function onSuccess(response) {
     if (response.data.length == 0) {
         response.status = 404;
         response.statusText = "Not Found -- Zero records";
         //throw to chain rejection
         throw response;
     } else {
         //return to chain response
         return response;
     };
});

Вышеприведенный пример преобразует ответ с данными нулевой длины в отклонение.

Имейте в .sucesss метод .sucesss игнорирует значения возврата (или значения). .sucesss и .error не подходят для цепочки и устарели.

Уведомление об изнашивании 1

Методы обещания $http legacy .success и .error устарели. Вместо этого используйте стандартный метод .then.

0

Если API возвращает пустые результаты со status - 200 OK означает следовать приведенному ниже коду, чтобы выбросить ошибку. Или попросите команду сервера выбросить код состояния 404 для соответствия не найденным в вашем API.

$http.get('http://example.com').then(function(response){
    if(response.data==''){
        //Throw error message as 'Order not found'
    }
    //the response from the server is now contained in 'response'
}, function(error){
    if(error.status=='404'){
        //Throw error message as 'Order not found'
    }
    //there was an error fetching from the server
});
0

Это довольно просто, вы можете проверить, есть ли у вас response.data что-то или ничего.

Ниже приведен код для того же...

 $http.get('http://example.com').then(function(response){
            if(!response.data){
               // here you can throw error message 'Order not foun
            }
     }, function(error){
         //there was an error fetching from the server
        }
     });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню