来自 Angular 的 HTTP Get 请求 JS 收到空回复
HTTP Get request from Angular JS receives empty reply
由于我是网络开发的新手,所以这很可能是一个非常容易解决的问题。不幸的是,我无法自己解决这个问题,因为我不知道在哪里搜索。
目前,我正在尝试从 ASP.NET Web API 中获取数据,该 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>
我的WebAPI中controller的动作实现如下:
[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 将 return 数据。当我使用 Fiddler 查看发生了什么时,它变得更加奇怪。在 Fiddler 中我可以看到请求并看到响应与我在网页上看到的完全不同:
由于我缺乏知识和经验,我不知道发生了什么......
- 我的 JavaScript 有什么地方做错了吗?
- 我是否应该在 HTML 页面中执行其他操作?
- 或者我的 Web API 需要什么特别的东西吗?
非常感谢任何帮助或想法!
正常 php 我得到 angular 变量
$data = file_get_contents("php://input");
你应该看看
print_r($data);
包含您需要的内容。
在这上面花了更多时间后,我发现需要做一些事情来解决我的问题:
我注意到我必须在我的网站 API 上启用 CORS,以便 JavaScript 能够向我的网站发出请求 API.我是通过这个 link 来到这里的,我只是按照说明的步骤进行操作,然后 运行.
起初我还发现我也可以使用 JavaScript 中可用的通用 XMLHttpRequest
对象获取我的数据。通过首先使用此方法显示我的数据,我还发现了下一项:
$http.get
方法返回的response对象其实就是我的WebAPI直接返回的对象。所以我可以只使用定义的属性来显示所需的数据。
由于我是网络开发的新手,所以这很可能是一个非常容易解决的问题。不幸的是,我无法自己解决这个问题,因为我不知道在哪里搜索。
目前,我正在尝试从 ASP.NET Web API 中获取数据,该 Web API 在我的本地计算机上是 运行。为了获取这些数据,我使用 AngularJS:
编写了一小段 JavaScriptfunction 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>
我的WebAPI中controller的动作实现如下:
[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 将 return 数据。当我使用 Fiddler 查看发生了什么时,它变得更加奇怪。在 Fiddler 中我可以看到请求并看到响应与我在网页上看到的完全不同:
由于我缺乏知识和经验,我不知道发生了什么......
- 我的 JavaScript 有什么地方做错了吗?
- 我是否应该在 HTML 页面中执行其他操作?
- 或者我的 Web API 需要什么特别的东西吗?
非常感谢任何帮助或想法!
正常 php 我得到 angular 变量
$data = file_get_contents("php://input");
你应该看看
print_r($data);
包含您需要的内容。
在这上面花了更多时间后,我发现需要做一些事情来解决我的问题:
我注意到我必须在我的网站 API 上启用 CORS,以便 JavaScript 能够向我的网站发出请求 API.我是通过这个 link 来到这里的,我只是按照说明的步骤进行操作,然后 运行.
起初我还发现我也可以使用 JavaScript 中可用的通用
XMLHttpRequest
对象获取我的数据。通过首先使用此方法显示我的数据,我还发现了下一项:$http.get
方法返回的response对象其实就是我的WebAPI直接返回的对象。所以我可以只使用定义的属性来显示所需的数据。