【问题标题】:HTTP Get request from Angular JS receives empty reply来自 Angular JS 的 HTTP Get 请求收到空回复
【发布时间】:2015-07-19 08:25:50
【问题描述】:

由于我对 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 有什么地方做错了吗?
  • 我应该在 HTML 页面中执行其他操作吗?
  • 或者我的 Web API 中需要什么特殊的东西?

非常感谢任何帮助或想法!

【问题讨论】:

  • 你实现了自定义的http拦截器吗?
  • 不,我没有实现任何特殊的东西。

标签: javascript angularjs asp.net-web-api angularjs-http


【解决方案1】:

在普通 php 中,我使用

获取角度变量
$data = file_get_contents("php://input");

你应该看看

print_r($data);

包含你需要的东西。

【讨论】:

    【解决方案2】:

    在花了相当多的时间后,我发现需要做一些事情来解决我的问题:

    1. 我注意到我必须在我的 Web API 上启用 CORS,以便 JavaScript 能够向我的 Web API 发出请求。我是通过link 找到这个的,我只是按照说明的步骤启动并运行它。

    2. 一开始我还发现,我还可以使用 JavaScript 中提供的通用 XMLHttpRequest 对象来获取我的数据。通过首先使用这种方法显示我的数据,我还发现了下一项:

    3. $http.get方法返回的响应对象其实是我的Web API直接返回的对象。所以我可以只使用定义的属性来显示所需的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      相关资源
      最近更新 更多