使用angularjs将数据发布到PHP
如何提交表单并将post数据传递给使用angularjs将数据发布到PHP,php,angularjs,ionic,Php,Angularjs,Ionic,如何提交表单并将post数据传递给angularjs?我知道这一定是件小事,但我看不出我的错误 该数据将提供PHPAPI中的post变量,该变量使用webservice并返回JSON,当我不使用搜索函数时,该变量起作用 我有month和origin传递给控制器中的搜索功能,在ApiAcp工厂,我有一个来自url的解析:q.resolve(数据) 当我提交时,控制台日志显示:“无法读取未定义的url属性”,我看不到如何将端点url正确地注入搜索函数,因为没有参数的搜索工作正常 以下是模板和搜索按钮
angularjs
?我知道这一定是件小事,但我看不出我的错误
该数据将提供PHP
API
中的post变量,该变量使用webservice
并返回JSON
,当我不使用搜索函数时,该变量起作用
我有month
和origin
传递给控制器中的搜索功能,在ApiAcp工厂,我有一个来自url的解析:q.resolve(数据)代码>
当我提交时,控制台日志显示:“无法读取未定义的url
属性”,我看不到如何将端点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"/>
在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
};
})
ApiAcpEndpoint应该注入控制器定义/初始化中,而不是注入$scope.search中(对于$http也是如此)
谢谢你,皮埃尔,这是我的工作!现在,当我提交到达端点时,剩下的唯一问题是数据未定义,data
未定义?我看到一些数据变量:)是搜索函数中的数据。我更改为表单提交:ng submit=“搜索(数据)现在,数据出现在console.log上,但似乎表单没有提交到模板,因为数据保持不变。月份和来源字段绑定正确,我可以在模板和console.log上选择它们时看到它们的值,但它们不会修改Web服务的url,结果始终是实际月份。我确实将搜索隔离到他自己的控制器中,但仍然无法获取数据
.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
};
})
.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);
})
}
}