为什么我的AngularJS ajax自动射击虽然我没有打电话给它?

时间:2016-12-28 14:26:24

标签: angularjs ajax spring-security

在我的应用程序中,我想在发生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调用。

  1. 为什么我的ajax会在春季安检后立即开火?

  2. 此外,在登录主页后,我点击li标签但是ajax调用不会触发,因为调试器不会在断点处停止。我犯了什么错误?

  3. enter image description here

2 个答案:

答案 0 :(得分:0)

<强> 修改

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");
                    }
                }]);

HTML

<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>

答案 1 :(得分:0)

问题解决了!在查看浏览器控制台输出后,Sateesh Kumar说,控制台说:$ http(...)。成功不是一个功能,我改变了我的ajax函数,如this solution,它可以工作