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服务器对标题设置了大小限制,所以如果数据太大,您可能会遇到问题。如果要发送多种类型的数据,请创建一个新类,其中显式包含分页数据和其他类型的数据,并返回该类。