簡體   English   中英

PHP / Angularjs / Post數據為空

[英]PHP/Angularjs/Post data empty

我確實在表單中選擇兩個字段( month and origin )並將其提交給AngularJS控制器,我使用的是與Ionic框架打包的1.3.13版本。

觀察一個console.log then方法中正確填充值。

返回的q.promisse具有此值: [object, object]

HTML模板的列表未填充rigth期望值。

這些值不會填充PHP APIPHP POST變量。

我怎樣才能填充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.postpromisse

.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;
      });
  }
})

默認情況下,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";
}]);

另一種方法是你處理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;

有了這些知識,您就可以創建一個函數甚至是您自己的全局函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM