PHP/Angularjs/Post数据为空

Âng*_*igo 3 php angularjs

month and origin在表单中选择两个字段()并将其提交给AngularJS控制器,我使用的是与Ionic框架打包的1.3.13版本.

观察console.log内部then方法,可以正确填充值.

q.promisse至极返回这个值:[object, object].

HTML模板列表未填充rigth预期值.

值不会填充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>
Run Code Online (Sandbox Code Playgroud)

并在我的控制器o使用http.post和a 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;
      });
  }
})
Run Code Online (Sandbox Code Playgroud)

Ric*_*ote 5

默认情况下,AngularJS以JSON格式发送数据.你不会在常规的PHP全局变量中找到它($ _REQUEST,$ _POST或$ _GET).

您有两种方法可以解决此问题:

为AngularJS全局设置默认的Content-Type(仅在请求不起作用之前设置标题).

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";
}]);
Run Code Online (Sandbox Code Playgroud)

另一种方法是你处理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;
Run Code Online (Sandbox Code Playgroud)

有了这些知识,您就可以创建一个函数甚至是您自己的全局函数