[英]HTTP Get request from Angular JS receives empty reply
由於我是Web開發的新手,因此這很可能很容易解決。 不幸的是,我自己無法解決此問題,因為我不知道在哪里搜索。
目前,我正在嘗試從本地計算機上運行的ASP.NET Web API中獲取數據。 為了獲得這些數據,我使用AngularJS編寫了一小段JavaScript:
function MainController($scope, $http) {
$http.get("http://localhost/DBLayerDLL/api/tablets/1005").
then(function(response) {$scope.data=response;},
function(response){$scope.data=response;});
}
使用的HTML頁面也非常簡單:
<!DOCTYPE html>
<html ng-app>
<head>
<script data-require="angular.js@*" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
<script src="scripts/main.js"></script>
</head>
<body ng-controller="MainController">
<h1>Hello World!</h1>
<div>
<div>Data: {{data}}</div>
</div>
</body>
</html>
Web API中控制器的操作實現如下:
[RoutePrefix("api/tablets")]
public class TabletsController : ApiController
{
[Route("{ID}")]
[HttpGet]
public TabletRecord GetTablet(int ID)
{
TabletRecord tablet = new TabletRecord();
tablet.LoadFromID(ID);
return tablet;
}
}
問題出在我從HTTP請求獲得的響應之內。 當打印在頁面上時,它看起來像這樣:
{"data":"","status":0,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":"http://localhost/DBLayerDLL/api/tablets/1005","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":""}
這是不正確的,因為我知道我的API將返回數據。 當我使用Fiddler看看發生了什么時,這對我來說甚至變得更加奇怪。 在Fiddler中,我可以看到請求,並且看到響應與我在網頁上看到的完全不同:
由於缺乏知識和經驗,我不知道發生了什么...
任何幫助或想法都將受到高度贊賞!
在花了更多時間之后,我發現需要一些事情來解決我的問題:
我注意到,為了使JavaScript能夠向我的Web API發出請求,我必須在Web API上啟用CORS。 我是通過此鏈接進入此頁面的,我只是按照說明的步驟進行安裝和運行。
我還首先發現,我還可以使用JavaScript中可用的常規XMLHttpRequest
對象獲取數據。 通過首先使用此方法顯示數據,我還發現了下一項:
$http.get
方法返回的響應對象實際上是我的Web API直接返回的對象。 因此,我只能使用定義的屬性來顯示所需的數據。
在普通的PHP上,我得到的角度變量
$data = file_get_contents("php://input");
你應該看看
print_r($data);
包含您所需要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.