Ajax 成功是可行的,但不是这样,为什么?
请参阅- 在AngularJS中,我使用$http服务进行ajax调用。数据是使用“success”回调填充的,而不是使用“then”回调填充的。 我有两个问题- 1) 成功和成功有什么区别?Ajax 成功是可行的,但不是这样,为什么?,ajax,angularjs,http,Ajax,Angularjs,Http,请参阅- 在AngularJS中,我使用$http服务进行ajax调用。数据是使用“success”回调填充的,而不是使用“then”回调填充的。 我有两个问题- 1) 成功和成功有什么区别? 2) 何时使用“then”,何时使用“success”?据我所知,我主要在查询api或其他数据库时使用success。然后主要用于从自己的数据库请求数据。这是我的用法,也是我看到其他人使用的用法 成功和成功有什么区别 然后解析表示http响应的对象。也就是说,then方法的回调只接受一个具有以下结构的参数
2) 何时使用“then”,何时使用“success”?据我所知,我主要在查询api或其他数据库时使用success。然后主要用于从自己的数据库请求数据。这是我的用法,也是我看到其他人使用的用法 成功和成功有什么区别
然后
解析表示http响应的对象。也就是说,then
方法的回调只接受一个具有以下结构的参数:
–使用转换函数转换的响应体data{string | Object}
–响应的HTTP状态代码状态–{number}
–Header getter函数headers–{function([headerName])}
–用于生成请求的配置对象config–{Object}
–响应的HTTP状态文本statusText–{string}
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;
};
何时使用“then”,何时使用“success”
为了与其他promise库保持一致,我建议您始终使用标准的then
方法。如果将$http.success
替换为$http。那么
请注意,前者中响应
对象中的内容与后者中的响应.数据
等效:
$http.get(...).success(function (response) {
return response;
}
相当于:
$http.get(...).then(function (response) {
return response.data;
}
利用成功
$http.get(url)
.success(function(response) {
$scope.items = response;
});
});
那么使用
$http.get(url)
.then(function(data){
$scope.items = data.data
});
我认为不同之处在于传递参数的内容注意,
success
根据$http
docs被弃用请使用一个链接确认,该链接表示success将被弃用。在您的回答中,“直接解析正文”是什么意思?我的意思是,当您使用success
时,回调的第一个参数是http响应主体,而当您使用然后使用时,第一个参数是一个表示整个http响应的对象,带有标题、状态码等。。。我将对其进行编辑以使其更加清晰。一个查询,我看到成功返回了原始承诺,而随后返回了新承诺。我很困惑!这到底意味着什么,一个js fiddle之类的解释真的会很有帮助。我会在success中交换参数的名称,然后回调。在“then”函数中得到响应,在“success”函数中得到数据。
$http.get(url)
.then(function(data){
$scope.items = data.data
});