请引用-http://jsfiddle.net/U3pVM/18728/
var app = angular.module("myapp", []);
app.controller("mycontroller", function($scope, $http, $timeout) {
var url = "http://www.dummyurl.com";
$http.get(url).success(
function(response) {
$scope.items = response;
});
});
在 Angular JS 中,我使用 $http 服务进行 ajax 调用。使用“success”回调填充数据,而不使用“then”回调填充数据。 我有 2 个问题 -
1) 成功和然后有什么区别? 2)什么时候用“then”,什么时候用“success”?
最佳答案
What is the difference between success and then?
then
解析代表您的 http 响应的对象。也就是说,then
方法的回调只接受一个参数,其结构如下:
data – {string|Object}
– 使用转换函数转换的响应正文。status – {number}
– 响应的 HTTP 状态代码。headers – {function([headerName])}
– header 获取函数。config – {Object}
– 用于生成请求的配置对象。statusText – {string}
– 响应的 HTTP 状态文本。
另一方面,success
是一个速记函数,它将 http 响应的不同属性(除了不是很有用的 statusText 之外)分散到不同的参数中。因此,success
回调的第一个参数将仅包含 http 响应的响应正文(属性 response.data
)。
下面的代码取自 Angular 1.4.5,我从 Angular 1.0.0 就可以找到它:
promise.success = function(fn) {
promise.then(function(response) {
fn(response.data, response.status, response.headers, config);
});
return promise;
};
When to use "then", and when to "success"?
为了与其他 Promise 库保持一致,我建议您始终使用标准 then
方法。如果将 $http.success
替换为 $http.then
,请注意,在前者的 response
对象中得到的内容相当于后者中的 response.data
:
$http.get(...).success(function (response) {
return response;
}
相当于:
$http.get(...).then(function (response) {
return response.data;
}
关于ajax - Angular JS 成功了,但后来不行了,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32669491/