У меня есть вызов HTTP $ POST в AngularJS, который не будет отображать ответ сервера, если запрос был плохим.
myFactory.create = function(formData) {
deferred = $q.defer()
$http({method: 'POST', url: url, responseType: 'json', data: formData})
.then(function(data) {
deferred.resolve(data);
}, function(response, status, headers, config) {
deferred.reject(response);
});
return deferred.promise;
};
Когда я отправляю неверные данные, API отвечает 400-Bad Request. Если я посмотрю на ответ в инструментах разработчика Chrome, есть текстовое сообщение: «Вертикаль неверен». Однако это сообщение не находится в ответе на обратный вызов ошибки $ http.
Я могу получить все остальное (статус, заголовки и конфиг), но мои данные ответа равны нулю.
Успешные POST обрабатываются правильно, поэтому я знаю, что функция обычно работает.
Любая идея, почему я мог бы увидеть ответ в Chrome, но не смог получить к нему доступ через $ http?
предложение: не создавайте обещаний, в которых уже существуют обещания. Это известно как анти-шаблон. – rahpuser
Можете ли вы опубликовать часть, в которой вы действительно получаете данные из обещанного обещания? Плюс, я просто предполагаю, что вы меняете «url» на переменную, хотя этого не существует. И вы не объявляли отложенным как var. – gsalisi
Да. «url» на самом деле является переменной и генерируется в другом месте на моей фабрике. Прямо сейчас, я только что проверил его с помощью console.log (response), чтобы узнать, что возвращается при возникновении ошибки. –