为啥我的 AngularJS ajax 自动触发,即使我没有调用它?
Posted
技术标签:
【中文标题】为啥我的 AngularJS ajax 自动触发,即使我没有调用它?【英文标题】:Why my AngularJS ajax auto fire eventhough I don't call it?为什么我的 AngularJS ajax 自动触发,即使我没有调用它? 【发布时间】:2017-05-12 20:29:31 【问题描述】:在我的应用程序中,我想在 ng-click 事件发生时触发 ajax 调用:
<ul class="sub">
<li>
<a href="javascript:;" ng-class="active : isSet(1)" ng-click="getData(); setTab(1)">Bla bla bla</a>
</li>
</ul>
我的脚本:
angular.module('mainApp', ['smart-table'])
.controller('TabController', ['$scope', function ($scope, $http)
$scope.tab = 2;
$scope.setTab = function (newTab)
$scope.tab = newTab;
;
$scope.isSet = function (tabNum)
return $scope.tab === tabNum;
;
$scope.getData = function ()
$http(
url: "/goodsList",
method: "GET"
).success(function (data, status, headers, config)
angular.copy(data, $scope.oriList);
).error(function(data, status, headers, config)
alert('Error getting data');
);
;
]);
当我在 IntelliJ 上调试我的脚本时,它会在登录部分停止,并且响应是 userinfo(这是 spring sercurity 服务的响应)。除了 li 标记之外,没有任何代码行可以触发 ajax 调用。
为什么我的 ajax 在 spring 安全服务之后立即触发?
1234563我犯了什么错误?【问题讨论】:
【参考方案1】:问题解决!在查看 Sateesh Kumar 所说的浏览器控制台输出后,控制台说:$http(...).success 不是一个函数,我将我的 ajax 函数更改为 this solution 并且它可以工作
【讨论】:
【参考方案2】:编辑
JS
angular.module('mainApp', [])
.controller('TabController', ['$scope','$http' ,function ($scope, $http)
$scope.tab = 2;
$scope.setTab = function (newTab)
$scope.tab = newTab;
;
$scope.isSet = function (tabNum)
return $scope.tab === tabNum;
;
$scope.getData = function()
$http(
url: "/goodsList",
method: "GET"
).then(function(response)
angular.copy(data, $scope.oriList);
, function(response)
alert('Error getting data');
);
$scope.s = function()
alert("AXX");
]);
<div ng-app="mainApp" >
<div ng-controller="TabController">
<ul class="sub">
<li>
<button ng-class="active : isSet(1)" ng-click="getData(); setTab(1)">Bla bla bla</button>
<button ng-click="s()">
omri lugasi
</button>
</li>
</ul>
</div>
</div>
【讨论】:
我添加了 '$http' 但没有任何改变 秒把小提琴@hai_uit 修复我在getData函数@hai_uit上的答案以上是关于为啥我的 AngularJS ajax 自动触发,即使我没有调用它?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 jQuery .ajax() 路由的 .done() 方法没有在我的 NodeJS、Express 和 Mongoose 项目中触发?