为啥我的 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");
                    
                ]);

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>

【讨论】:

我添加了 '$http' 但没有任何改变 秒把小提琴@hai_uit 修复我在getData函数@hai_uit上的答案

以上是关于为啥我的 AngularJS ajax 自动触发,即使我没有调用它?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 jQuery .ajax() 路由的 .done() 方法没有在我的 NodeJS、Express 和 Mongoose 项目中触发?

AngularJS $location 不改变路径

为啥我的 ASP.NET MVC 站点中的此 AJAX 请求会触发预检检查?

我没有在 html 中显示 ajax 表,为啥?

为啥我的 ajax 请求得到响应 0?

为啥我不能使用 jQuery 从卸载事件处理程序触发 AJAX 请求?