AngularJS ajax http promise返回额外的数据
AngularJS ajax http promise returns additional data
在promise then函数中,当您收到数据对象时,它被另一个数据对象包装,如
data = Object {data: Object, status: 200, config: Object, statusText: "OK"}
如何避免这种情况。您需要访问您的变量,如data.data.myVar
var test123 = $scope.test();
test123.then(function(data){
console.log(data);
// why you need to access your data in "data.data.myValue"
},function(data){
});
$scope.test = function(){
var promise = $http(
{
method: 'GET',
dataType: "jsonp",
url: 'json/requestKey.json'
}
)
.success(function(data) {
return data;
})
.error(function(data){
//return data;
});
return promise;
};
从"service"返回数据部分。你可以抛弃多余的承诺,因为$http
已经是一个承诺。
$scope.test().then(function(data) {
console.log(data);
});
$scope.test = function() {
return $http('json/requestKey.json').then(function(response) {
return response.data;
});
};
这有两种解决方法
- 尝试返回结果对象,而不是将其包裹在另一个对象周围,然后返回到服务器端的客户端。
- 在
$http
的success()
回调中,返回data.data
而不仅仅是return data
,这样在then()
函数中您将获得内部对象。
当你返回时,HttpResponseMessage, REST api以这种格式响应数据,
Object {data: Object, status: 200, config: Object, statusText: "OK"}
在ajax中解析成功回调,
$http.get(urlBase + '/get/' + id).then(function (response) {
var yourData = response['data'];
var yourStatusCode = response['status'];
var yourStatusText = response['statusText'];
//assign data to any other $scope object
$scope.product = yourData;
}, function (error) {
console.log('error occured!!');
});
你现在可以做得很好,你现在不需要改变web api的响应
相关文章:
- JSON数组数据返回Undefined
- AngularJS中的页面之间共享数据返回空
- post()向服务器动态生成的数据返回空响应
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- d3从mysql数据库导入数据返回“0”;未定义”;
- JSON可以't访问数据返回未定义
- 让 ajax 数据返回到调用函数 - 需要澄清之前的答案
- ajax 调用 PHP 数据返回 VM92:1 未捕获语法错误:意外的标记 {.
- Jquery ajax 请求无法将数据返回给其他函数
- 在 jquery 中将数据返回给 ajax 调用
- Meteor.methods:从内部回调将数据返回给客户端
- 将PHP数据返回到我当前的网页,供Javascript访问
- ajax 调用如何将数据返回给变量
- 将数据返回到索引.js节点表达式
- j查询帖子数据返回比较不起作用
- 节点 API 未将数据返回给客户端 ajax 请求
- jQuery 函数在 AJAX 数据返回上不起作用
- AJAX 将数据返回给 jquery
- 中继:获取递归数据返回空值
- 根据chrome.storage中的数据返回chrome.webRequest.onBeforeRequest的值