angularjs – Angular接收String作为数组?

我正在使用AngularJS和ASP.Net的Web API协同工作.我在API中有一个TestController,它很简单:
public class TestController : ApiController {
    [HttpGet]
    public String Ping() {
        return "Pong";
    }
}
@H_403_3@在Chrome中,我可以访问http:// localhost / api / Test / Ping,fiddler显示简单的“Pong”结果,浏览器显示

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Pong</string>
@H_403_3@回到Angular JS,我设置了一个工厂来调用Ping函数

app.factory('API',['$resource',function ($resource) {
    return {
        Ping: function () {
            var result = $resource('api/Test/Ping',{},{ get: { method: 'GET' },isArray: false });
            return result.get();
        }
    };
}]);
@H_403_3@一个超级简单的控制器:

app.controller('MyCtrl',[ '$scope','API',function ($scope,API) {
    $scope.CallTest = function () {
        API.Ping().$promise.then(function (response) {
            alert(response);
        });
    }
}]);
@H_403_3@当我单击CallTest绑定的按钮时,它会进行调用,API会返回Pong,但返回对象并不完全符合我的预期.回应是一个奇怪的对象:

{
    0: """,1: "P",2: "o",3: "n",4: "g",5: """,$promise: {...},$resolved: true
}
@H_403_3@我没有收到任何错误,语法上的一切都运行正常.然而,我希望响应是一个字符串,特别是因为我在API工厂中将isArray设置为false.我相信angular必须返回一个“资源”,它具有$promise和$,因此我现在明白它可能不会那样工作.除了在WebAPI中创建一个简单的包装器以返回一个字符串作为模型上的参数之外,是否有可用的客户端选项,以便响应可以包含普通字符串而不是此伪数组?就像response.data或者什么?

@H_403_3@编辑:当我从浏览器请求时,Accept标头包含:

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
@H_403_3@这导致上面的XML结果.当Angular请求相同的url时,Accept标头包含:

application/json,text/plain,*/*
@H_403_3@这导致回复内容只是“乒乓”

如文档中所述,$resource是一个工厂,它创建一个资源对象,使您可以与REST服务器端数据源进行交互. @H_403_3@在您的情况下,您不会尝试与正确的RESTful数据源进行交互,因此行为似乎很奇怪.

@H_403_3@在您拥有正确的RESTful数据源之前,只需要访问API端点并检索简单响应(例如字符串),您应该使用$http service

$http.get('api/Test/Ping').success(function (data) {...})...
@H_403_3@例如.:

app.factory('API',['$http',function ($http) {
    return {
        Ping: function () {
            return $http.get('api/Test/Ping');
        }
    };
}]);

app.controller('MyCtrl',['$scope',API) {
    $scope.CallTest = function () {
        API.Ping().success(function (data) {
            alert(data);
        });
    };
}]);

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...