2015-07-13 107 views
-1

如何提交表单并将帖子数据传递给angularjs?我知道这一定是微不足道的任务,但看不到我的错误。使用angularjs发布数据到PHP

数据将饲料在PHPAPI后变量消耗webservice并返回JSON,它是工作的时候,不使用搜索功能。

我有monthorigin传递到一个控制器中的搜索功能,并在ApiAcp工厂我从url: q.resolve(data);

下决心当我提出,控制台日志说:“看不懂url财产未定义“,我看不到如何正确地将Endpoint url注入搜索功能,因为没有参数的搜索可以正常工作。

这里是模板和搜索按钮:

<form method="post" ng-controller="AcpSearchCtrl" ng-submit="searchAcp(data)"> 
    <select name="month" ng-model="data.month"> 
    <option value="01">January</option> 
    <option value="02">February</option> 
    ... 
</select> 

<select name="origin" ng-model="data.origin"> 
    <option value="99">OneState</option> 
    ... 
    ... 
</select> 
<input type="button" ng-click="search(data)" value="Search"/> 

在控制器我尝试创建一个搜索功能至极不是工作表示无法读取的未定义的属性url:

.controller('AcpSearchCtrl', function($scope, ApiAcp, $timeout, $http, ApiAcpEndpoint, $q) { 
    $scope.searchAcp = function(data) { 
    $scope.month = data.month; 
    $scope.origin = data.origin; 
    var q = $q.defer(); 
    $http.post(ApiAcpEndpoint.url, data) 
     .then(function(data) {  
      console.log(data); 
      console.log(' - data.month '+data.month); 
      console.log(' - data.origin '+data.origin); 
      q.resolve(data); 
      console.log(' q.promise '+q.promise); 
      var acp = {}; 
      acp.dados = [ data ];  
      $scope.data = acp.dados; 
      console.log('data :'+$scope.data); 

      return q.promise; 
     }); 
    } 
}) 

在Services.js我发布数据,它的工作原理,如果我不按月或来源搜索:

.factory('ApiAcp', function($http, $q, ApiAcpEndpoint) { 
    console.log('1. ApiAcpEndpoint url ', ApiAcpEndpoint.url) 

    var getApiData = function() {  
    var q = $q.defer();  
    $http.post(ApiAcpEndpoint.url) 
    .success(function(data) { 
     q.resolve(data); 
    }) 
    .error(function(error){ 
     console.log('Had an error'+error) 
     q.reject(error); 
    }) 
    return q.promise; 
    } 
    return { 
    getApiData: getApiData  
    }; 
}) 

回答

1

ApiAcpEndpoint应该在控制器定义/初始化中注入,而不是在$ scope.search中(同样适用于$ http)

.controller('AcpCtrl', function($scope, ApiAcp, $ionicLoading, $timeout, $http, ApiAcpEndpoint) { 
    $scope.data = null; 
    ApiAcp.getApiData() 
    .then(function(result) {  
     console.log(result); 
     $scope.headers = ['Desc','Real. month', 'Real. year/month', 'Plan. year/month', 'Real. year']; 
     var acp = {}; 
     $scope.data = acp.dados; 
     console.log(' scope.data '+$scope.data); 

    }) 

    $scope.search = function(data) { 
    $http.post(ApiAcpEndpoint.url,data) 
     .success(function(data){ 
     console.log(' data from : '+data); 
    }) 
    } 
} 
+0

谢谢皮埃尔,它适用于我!现在当我提交端点时,唯一存在的问题是数据未定义 –

+0

哪个'data'是未定义的?我看到一些'data'变量:) – PierreDuc

+0

是搜索功能中的数据。我更改为表单提交:* ng-submit =“search(data)*现在数据显示在console.log中,但似乎表单并未提供给模板,因为数据保持不变。 –