gpt4 book ai didi

jquery - Angularjs 中 jQuery ajax beforeSend 的等价物是什么?

转载 作者:行者123 更新时间:2023-12-03 22:01:13 24 4
gpt4 key购买 nike

我熟悉Jquery AJAX call ,它有不同的回调,如 beforeSend、success、complete 等。

这是使用 Jquery 进行 AJAX 调用的示例:

$.ajax({
url: 'register.php',
type: 'POST',
data: {name:name, email:email},
beforeSend: function() {
// show loading GIF
},
complete: function() {
// hide loading GIF
},
success: function(data) {
// parse response
}
});

我想使用 AngularJS 实现同样的目标。

AngularJS AJAX 请求是否有类似 beforeSend 的回调?到目前为止,这是我的代码,但我不确定在哪里可以在代码中使用像 beforeSend 这样的回调(以便我可以显示正在加载的 GIF 图像):

$http.post('register.php', {'name': $scope.name, 'email': $scope.email})
.success(function(data, status, headers, config) {
if (data != '') {
}
});

最佳答案

默认情况下,Angular不提供beforeSend和complete,但你可以使用拦截器来实现它们。这是我的实现:

(function() {
var app = angular.module("app");

app.factory("interceptors", [function() {

return {

// if beforeSend is defined call it
'request': function(request) {

if (request.beforeSend)
request.beforeSend();

return request;
},


// if complete is defined call it
'response': function(response) {

if (response.config.complete)
response.config.complete(response);

return response;
}
};

}]);

})();

然后你必须像这样注册你的拦截器:

    (function () {
var app = angular.module('app', ['ngRoute']);


app.config(["$routeProvider", "$httpProvider", function ($router, $httpProvider) {

// Register interceptors service
$httpProvider.interceptors.push('interceptors');

$router.when("/", { templateUrl: "views/index.html" })


.otherwise({ redirectTo: "/" });
}]);
})();

在这段代码之后,您可以像这样使用它:

var promise = $http({
method: 'POST',
url: constants.server + '/emails/send',
data: model,
beforeSend: function() {
model.waiting = true;
},
complete: function() {
model.waiting = false;
}
});

关于jquery - Angularjs 中 jQuery ajax beforeSend 的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22140591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com