Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从标头变量获取数据时,角度加载的数据显示为字符串而不是对象_Javascript_Angularjs_Asp.net Mvc_Asp.net Apicontroller - Fatal编程技术网

Javascript 从标头变量获取数据时,角度加载的数据显示为字符串而不是对象

Javascript 从标头变量获取数据时,角度加载的数据显示为字符串而不是对象,javascript,angularjs,asp.net-mvc,asp.net-apicontroller,Javascript,Angularjs,Asp.net Mvc,Asp.net Apicontroller,在角度控制器上,我具有以下功能: vm.test = function () { testService.test() .then(function (response) { var pagination = response.data; var xPagination = response.headers("x-pagination"); console.log(pagination); console.log(xPagination

在角度控制器上,我具有以下功能:

vm.test = function () {
  testService.test()
    .then(function (response) {
      var pagination = response.data;
      var xPagination = response.headers("x-pagination");
      console.log(pagination);
      console.log(xPagination);
    })
}
在控制台上,我看到for pagination是一个对象,但xPagination显示为:

 { "pageNumber": 2}
因此,我在尝试时未定义:

 console.log(xPagination.pageNumber);
但是我在使用pagination.pageNumber时没有这个问题

我调用的测试API使用ASP.NET API,我有:

在ASP.NET Web Api上,我有以下内容:

// This is test code to isolate the problem
public async Task<IHttpActionResult> Test() {

  Pagination pagination = new Pagination { PageNumber = 2 }; 

  HttpResponseMessage response = Request.CreateResponse<Pagination>(HttpStatusCode.OK, pagination);

  String xPagination = JsonConvert.SerializeObject(pagination, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });

  response.Headers.Add("x-pagination", xPagination);

  return ResponseMessage(response);

}
//这是隔离问题的测试代码
公共异步任务测试(){
分页分页=新分页{PageNumber=2};
HttpResponseMessage response=Request.CreateResponse(HttpStatusCode.OK,分页);
String xPagination=JsonConvert.SerializeObject(分页,新JsonSerializerSettings{ContractResolver=new CamelCasePropertyNamesContractResolver()});
添加(“x-pagination”,xPagination);
返回响应消息(response);
}
我错过了什么?我想把xPagination变成一个有角度的物体


我是否在API中做了一些错误的事情,还是需要在角度部分做一些其他的事情?

标题应该是字符串,但在您的例子中,xPagination可以是JSON字符串。你试过JSON.parse(xPagination)吗?现在我试过。。。使用JSON.parse或angular.fromJson效果很好。。。我只是不确定是否应该在我的api上执行其他操作。不,它工作正常。您必须使用
JsonConvert.SerializedObject
这一事实应该表明它需要在另一端反序列化。另外,我不建议使用头来发送此类数据(不确定为什么您需要这样做,因为您已经在response.data中获得了所需的内容)。Web服务器对标题设置了大小限制,所以如果数据太大,您可能会遇到问题。如果要发送多种类型的数据,请创建一个新类,其中显式包含分页数据和其他类型的数据,并返回该类。