У меня есть данные заказа, загружающие в мое приложение и заполняющие мои поля, но если я введу неправильный номер заказа, он не выдает ошибку, просто заполняет поля пустой информацией.
$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
});
Производные обещания создаются путем возврата или бросания функций обработчика.
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
.
Если 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
});
Это довольно просто, вы можете проверить, есть ли у вас 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
}
});
query
переменной и тест с ,if
, если его все хорошо. В противном случае вы можете просто выдать ошибку на свой бэкэнд, а затем использоватьfunction(error){}
.