2016-11-08 1 views
0

Здравствуйте, мне нужно показать ответ с сайта (200, 404 и т. Д.), Используя службы REST.

я создал частичный код, но я не знаю, как показать результат

Это JS

angular.module('demo', []) 
.controller('Hello', function($scope, $http) { 
    $http ({ 
     method: 'GET', 
     url: 'http:/www.google.com' 
    }). 
     then(function(response) { 
      $scope.greeting = response.data; 
     }); 
}) 

и это HTML

<body> 
    <div ng-controller="Hello"> 
     <p>Result = {{greeting.content}}</p> 
    </div> 
    </body> 

</html> 

Спасибо за помощь.

+0

проверить документы https://docs.angularjs.org/tutorial – mcranston18

ответ

0

response является IHttpPromise<T>, который распространяется IPromise<IHttpPromiseCallbackArg<T>>.

Интерфейс для этого выглядит следующим образом:

interface IHttpPromiseCallbackArg<T> { 
    data?: T; 
    status?: number; 
    headers?: IHttpHeadersGetter; 
    config?: IRequestConfig; 
    statusText?: string; 
} 

Таким образом, вы можете получить доступ, что вам нужно с: response.status

с кодом:

angular 
 
    .module('demo', []) 
 
    .controller('Hello', HelloController) 
 

 
function HelloController($scope, $http) { 
 
    $http({ 
 
     method: 'GET', 
 
     url: 'http://enable-cors.org' 
 
    }) 
 
    .then(function(response) { 
 
     var text = "The status: " + response.status; 
 
     
 
     $scope.directResponse = response; 
 
     $scope.greeting = {content: text}; 
 
     $scope.someVariable = text; 
 
    }); 
 
    
 
} 
 

 
/* 
 
var $http = angular.injector(["ng"]).get("$http"); 
 

 
$http.get("http://enable-cors.org/").then(function(response) { 
 
    console.log(response.status); 
 
}); 
 
*/
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="demo" ng-controller="Hello"> 
 
    <p>Status = {{directResponse.status}}</p> 
 
    <p>Result = {{greeting.content}}</p> 
 
    <p>Result = {{someVariable}}</p> 
 
</div>

+0

Я пытаюсь изменить, но ничего не происходит – nowaySync

+0

Ваш URL (http: /www.google.com) неверен (только одна косая черта). И вам нужно установить CORS, чтобы увидеть код состояния. Я использовал для тестирования: http://enable-cors.org/ –

+0

Я попробовал этот код, но не запускал: angular.module ('demo', []) .controller ('Hello', function ($ scope, $ http) { $ http.get ("http://enable-cors.org/"). then (функция (ответ) { console.log (response.status); }) then (function (ответ) { $ scope.greeting = "Мои данные:" + response.data + "Статус:" + response.status; }); }); – nowaySync

0

Вы действительно должны помещать свои $ http-звонки в отдельный сервис и вводить это в контроллер.

так что-то вроде этого:

angular.module('demo') 
.factory('greetingService', function($http) { 
    this.getGreeting = function() { 
     return $http ({ 
      method: 'GET', 
      url: 'http:/www.google.com' 
     }).then(function(response) { 
      return response.data 
     }); 
    } 
}; 

Затем вводят услугу в контроллер и вызвать greetingService.getGreeting, а затем установить переменную $ области действия на результат.

Также убедитесь, что у вас есть соответствующие заголовки в вашем запросе.

+0

Хотя это хорошая практика для этого в проекте с приличным размером с комбинацией обработки данных, я не понимаю, почему это необходимо обернуть '$ http' в отдельной службе, в одиночку. И это не относится к этому вопросу.' $ http' сам тоже является сервисом. – Icycool

Смежные вопросы