Данные PHP / Angularjs / Post пусты

Я выбираю два поля ( month and origin ) в форме и отправляю их на контроллер AngularJS , я использую версию 1.3.13, упакованную с Ionic framework.

Наблюдая за console.log внутри метода, значения заполняются правильно.

q.promisse имеет это значение: [object, object] .

Список HTML шаблона не заполняется строгими ожидаемыми значениями.

Значения не заполняют переменную PHP POST в PHP API .

Как я могу заполнить данные POST ?

В моем шаблоне я отправляю метод search :

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

И в моем контроллере o используйте http.post и promisse :

 .controller('AcpSearchCtrl', function($scope, ApiAcpSearch, $ionicLoading, $timeout, $http, ApiAcpEndpoint, $q) { $scope.search = function(data) { $ionicLoading.show({ noBackdrop: false, template: '<p>searching ...</p>' }); var q = $q.defer(); $scope.formData = {}; $scope.submission = false; var param = function(data) { var returnString = ''; for (d in data){ if (data.hasOwnProperty(d)) returnString += d + '=' + data[d] + '&'; } return returnString.slice( 0, returnString.length - 1 ); }; console.log('formData : '+$scope.formData); return $http({ url:ApiAcpEndpoint.url, data : param($scope.formData), method : 'POST', headers : {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} }) .then(function(data) { q.resolve(data); var acp = {}; acp.qdata = [ data ]; $scope.data = acp.qdata; $ionicLoading.hide(); return q.promise; }); } }) 

Related of "Данные PHP / Angularjs / Post пусты"

AngularJS по умолчанию отправляет данные в формате JSON. Вы не найдете его в обычных глобальных глобалах ($ _REQUEST, $ _POST или $ _GET).

У вас есть два способа решить эту проблему:

Установите по умолчанию Content-Type глобально для AngularJS (просто установите заголовок до того, как запрос не будет работать).

 var app = angular.module("app", []); app.config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded"; $httpProvider.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"; }]); 

Альтернативой является то, что вы обрабатываете способ, которым AngularJS отправляет данные в PHP:

 $angularJSData = json_decode(file_get_contents("php://input")); // json_decode will create an object so if you need in array format $angularJSData = (array)$angularJSData; 

С помощью этих знаний вы можете создать функцию или даже свою собственную глобальную.