$ http.post在Angular Js中的ng-click函数内部不起作用

时间:2016-08-11 07:31:22

标签: php angularjs codeigniter http-post ngroute

我正在开发一个带有Anjular js和Codeigniter 3的项目。我在角度js中遇到了一些路由问题。我有一个包含用户详细信息列表的视图页面,在该列表中有一个标签,其中包含ng-click =" myName()"。我在我的js文件中声明了这个函数,这个函数运行正常。

<div class="container" ng-controller="ListController">

    <div class="row">
        <div class="col-lg-12 text-center">
            <h1>Starter Template</h1>
            <p class="lead">Complete with pre-defined file paths that you won't have to change</p>

            <div class="row">
                <div class="col-sm-6 col-md-4 wow zoomIn" data-wow-delay="0.5s" ng-repeat="items in artists">
                    <div class="thumbnail">
                        <img ng-src="{{settings.base_url}}/application/assets/images/profile/{{items.shortname}}.jpg" alt="...">

                        <div class="caption">
                            <h3>{{items.name}}</h3>
                            <p>{{items.bio}}</p>
                            <p><a href="{{settings.base_url_controller}}auth/functionOne" class="btn btn-primary" ng-click="myName()" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a></p>
                        </div>
                    </div>
                </div>


            </div>
        </div>
    </div>

在此功能内部&#34; myName()&#34;我写了$ http.post来获取控制器内部的一个函数(Codeiginter控制器)。我使用auth.php作为控制器,而functionOne()是用于检索的函数。

var base_url_abs = window.location.origin;
var base_url = base_url_abs+'/AngularExPack/Angular_Bootstrap_CI_1/';
var base_url_controller = base_url_abs+'/AngularExPack/Angular_Bootstrap_CI_1/index.php/';

    myApp.controller('ListController', ['$scope', '$http', 'settings', function($scope, $http) {

$http.get('application/datas/data.json').success(function (data){
    $scope.artists =  data;
  });
$scope.myName = function() {
         alert("hai1");
/*
         $http.post(base_url_controller+'auth/functionOne/').success(function (response){
          $scope.data = response
          console.log(response);
          //alert($scope.data);
        });*/


    /**/ $http({
          method  : 'POST',
          url     : base_url_controller+'auth/functionOne/',
          headers : {'Content-Type': 'application/x-www-form-urlencoded'} 
         })
         .success(function(data) {
            $scope.data = response
          console.log($scope.data);
          alert($scope.data);
          });

    }

}]);

当我运行它时,会出现错误并在控制台内显示如下

enter image description here

但是当我点击此链接时,我得到了正确的结果,并且如果我在标签内的href内部给出了base_url路径。

<a href="{{settings.base_url_controller}}auth/functionOne" class="btn btn-primary" ng-click="myName()" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a>

但我需要的是在myName函数中我必须使用$ j使用angular js访问控制器函数functionOne()。这可能。?

如果有人知道请帮助我找到ng-click中的解决方案。如果我写错了代码,请纠正我。

谢谢。

1 个答案:

答案 0 :(得分:0)

你应该使用

         $http({
             method  : 'GET',
             url     : base_url_controller+'auth/functionOne/',
             headers : {'Content-Type': 'application/x-www-form-urlencoded'} 
         })
         .success(function(data) {
             $scope.data = data
             console.log($scope.data);
             alert($scope.data);
          });