2016-11-08 120 views
0

您好,我需要使用REST服務來顯示網站(200,404等)的響應。

我創建了一個局部的代碼,但我不知道如何顯示結果

這是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

responseIHttpPromise<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, (函數(響應){console.log(response.status);} }響應){ $ 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