Javascript 如何防止在AngularJs中单击发送重复请求
我有一个angularJs应用程序,它有一个api调用,只需点击一个链接。但每次我点击链接,它都会向服务器发送两个相同的api调用。发生这种情况的原因以及如何解决此问题 我的服务就像:某物服务Javascript 如何防止在AngularJs中单击发送重复请求,javascript,ajax,angularjs,http,Javascript,Ajax,Angularjs,Http,我有一个angularJs应用程序,它有一个api调用,只需点击一个链接。但每次我点击链接,它都会向服务器发送两个相同的api调用。发生这种情况的原因以及如何解决此问题 我的服务就像:某物服务 function getData() { return apiSettings.getApiInformation().then(function (response) { var url = response.data.Url + "/odata/Something?$expa
function getData() {
return apiSettings.getApiInformation().then(function (response) {
var url = response.data.Url + "/odata/Something?$expand=Something";
var data = {
url: url,
type: "GET",
token: response.data.Token,
data: {},
async: true,
cache: false,
headers: {
"accept": "application/json; charset=utf-8",
'Authorization': 'Bearer ' + response.data.Token
},
dataType: "json",
success: {},
error: {},
complete: {},
fail:{}
};
return $http(data);
});
}
Api设置:
angular.module('myApp.services')
.factory('apiSettings', apiSettings);
apiSettings.$inject = ['$http'];
function apiSettings($http) {
return {
getApiInformation: function () {
return $http.get(baseUrl+ '/api/GetApiInformation', {cache: true});
}
}
}
var vm = this;
function getSlots(filterCriteria, selectedValue) {
somethingService.getData().then(function (response) {
if (response && response.value.length > 0) {
vm.someData = response.value;
}
});
something控制器:
angular.module('myApp.services')
.factory('apiSettings', apiSettings);
apiSettings.$inject = ['$http'];
function apiSettings($http) {
return {
getApiInformation: function () {
return $http.get(baseUrl+ '/api/GetApiInformation', {cache: true});
}
}
}
var vm = this;
function getSlots(filterCriteria, selectedValue) {
somethingService.getData().then(function (response) {
if (response && response.value.length > 0) {
vm.someData = response.value;
}
});
查看:
单击此链接将调用发送重复请求的getSlots
<a ui-sref="something" class="action-icons" id="slotNav"><i class="fa fa-square-o fa-fw"></i>
something
</a>
我有一个类似的问题,我通过检查解决了。我在HTML中声明了“ng控制器”,并使用routeProvider路由到它。通过删除HTML中的“ng控制器”属性修复了此问题
希望这有帮助。哪个调用被复制
odata/something
或api/getapinfo..
?为什么要同时使用angular的$http
和jQuery的$。ajax
?odata/有些东西正在被复制。对于每个odata get调用,有2个调用已完成。其他一切都很好。当我同时使用$http时,它的作用是相同的。我要更改的第一件事是使用angular的$http
服务的odata/something
调用$http
位于angular的域内(关于作用域),因此它知道何时触发摘要循环,这是angular的驱动因素(包括数据绑定)。当我使用$http进行bothIt时,它做了同样的事情。getSlots似乎被调用了两次,您需要它查看它是如何被调用的。这可能就是问题所在。