Javascript 是否可能知道,该请求正在处理中
我有很多页面,我使用Javascript 是否可能知道,该请求正在处理中,javascript,angularjs,Javascript,Angularjs,我有很多页面,我使用$http来处理请求(获取数据、更新),每次都必须使用ajax load.gif 现在,我需要这样做: <div ng-show="model == null || ajaxUpdating"> <div> <img src="~/Content/Images/gif-load.gif" /> <p>Waiting server respone...</p> </
$http
来处理请求(获取数据、更新),每次都必须使用ajax load.gif
现在,我需要这样做:
<div ng-show="model == null || ajaxUpdating">
<div>
<img src="~/Content/Images/gif-load.gif" />
<p>Waiting server respone...</p>
</div>
</div>
var myApp = angular.module('myApp', []).config(
[ '$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
//routes here
}]).config(function($httpProvider) {
//show a loading div when a http request is running
var numLoadings = 0;
var loadingScreen = $('<div style="position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;background-color:gray;background-color:rgba(70,70,70,0.2);"><img style="position:absolute;top:50%;left:50%;" alt="" src="css/loading.gif" /></div>').appendTo($('body')).hide();
$httpProvider.responseInterceptors.push(function() {
return function(promise) {
numLoadings++;
loadingScreen.show();
var hide = function(r) { if (!(--numLoadings)) loadingScreen.hide(); return r; };
return promise.then(hide, hide);
};
});
});
那么,我想知道,是否可以检查请求是否正在处理?我不想在我的代码中的任何地方都使用这么多标志,如果我只编写以下代码,可能会容易得多:
$http.isProcessing
比如说
Thx您。如果您需要在ajax http请求进行时加载gif,您可以在配置上设置拦截器,如下所示:
<div ng-show="model == null || ajaxUpdating">
<div>
<img src="~/Content/Images/gif-load.gif" />
<p>Waiting server respone...</p>
</div>
</div>
var myApp = angular.module('myApp', []).config(
[ '$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
//routes here
}]).config(function($httpProvider) {
//show a loading div when a http request is running
var numLoadings = 0;
var loadingScreen = $('<div style="position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;background-color:gray;background-color:rgba(70,70,70,0.2);"><img style="position:absolute;top:50%;left:50%;" alt="" src="css/loading.gif" /></div>').appendTo($('body')).hide();
$httpProvider.responseInterceptors.push(function() {
return function(promise) {
numLoadings++;
loadingScreen.show();
var hide = function(r) { if (!(--numLoadings)) loadingScreen.hide(); return r; };
return promise.then(hide, hide);
};
});
});
var myApp=angular.module('myApp',[]).config(
[“$routeProvider”、“$locationProvider”,
函数($routeProvider,$locationProvider){
//这里的路线
}]).config(函数($httpProvider){
//在http请求运行时显示加载div
var numLoadings=0;
var loadingScreen=$('').appendTo($('body')).hide();
$httpProvider.responseInterceptors.push(函数(){
返回函数(承诺){
numload++;
加载screen.show();
var hide=function(r){if(!(-numLoadings))loadingScreen.hide();返回r;};
回报承诺。然后(隐藏,隐藏);
};
});
});
请参阅,查找拦截器如果需要在ajax http请求进行时加载gif,可以在配置中设置拦截器,如下所示:
<div ng-show="model == null || ajaxUpdating">
<div>
<img src="~/Content/Images/gif-load.gif" />
<p>Waiting server respone...</p>
</div>
</div>
var myApp = angular.module('myApp', []).config(
[ '$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
//routes here
}]).config(function($httpProvider) {
//show a loading div when a http request is running
var numLoadings = 0;
var loadingScreen = $('<div style="position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;background-color:gray;background-color:rgba(70,70,70,0.2);"><img style="position:absolute;top:50%;left:50%;" alt="" src="css/loading.gif" /></div>').appendTo($('body')).hide();
$httpProvider.responseInterceptors.push(function() {
return function(promise) {
numLoadings++;
loadingScreen.show();
var hide = function(r) { if (!(--numLoadings)) loadingScreen.hide(); return r; };
return promise.then(hide, hide);
};
});
});
var myApp=angular.module('myApp',[]).config(
[“$routeProvider”、“$locationProvider”,
函数($routeProvider,$locationProvider){
//这里的路线
}]).config(函数($httpProvider){
//在http请求运行时显示加载div
var numLoadings=0;
var loadingScreen=$('').appendTo($('body')).hide();
$httpProvider.responseInterceptors.push(函数(){
返回函数(承诺){
numload++;
加载screen.show();
var hide=function(r){if(!(-numLoadings))loadingScreen.hide();返回r;};
回报承诺。然后(隐藏,隐藏);
};
});
});
请参阅,查找拦截器,只要知道ajax是异步的,那么回调机制就可以知道它何时完成。因此,您需要使用标志或类似的东西。据我们所知,ajax是异步的,因此回调机制需要知道它何时完成。所以你需要使用标志或类似的东西。顺便说一句,我们最好把这个推到html中,只显示隐藏它-这太棒了!顺便说一句,我们最好把这个推到html中,只显示隐藏它-这太棒了!