【问题标题】: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 调用。

  1. 为什么我的 ajax 在 spring 安全服务之后立即触发?

  2. 1234563我犯了什么错误?

【问题讨论】:

    标签: angularjs ajax spring-security


    【解决方案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上的答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多