AngularJS $ http.post和PHP

时间:2014-05-15 21:02:55

标签: javascript php json angularjs post

我使用AngularJS来$ http.post一个对象,但我也想在URL(或其他一些方式)中包含某种数据来指定这个对象包含的内容以及在哪里解析它PHP文件。知道如何将类似于GET的变量发送到AngularJS帖子中,所以在PHP中我可以将对象路由到正确的if语句进行解析吗?

这是我的AngularJS代码:

$scope.saveSchool=function(){
  var schoolData = angular.copy($scope.schoolsModal);
  $http.post('data/data.php?schoolModal=save', schoolData).error(function(){
    console.log('Did not post data to data.php');
  });
};

这是我在data.php文件中的PHP代码,希望接收并将对象路由到正确的if语句,以便解析并最终保存数据。

if (isset($_GET["schoolModal"])) {
  if ($_GET["schoolModal"] == "save") {
   $postdata = file_get_contents("php://input");
   $request = json_decode($postdata);
   echo "Acknowledged";
   echo $postdata;
 }

}

这不起作用,因为它不会抛出任何错误或返回任何内容(PHP)。这确实有效,但是我无法在php文件中路由对象(我必须为这个angularjs json对象创建一个单独的php文件)。

$scope.saveSchool=function(){
  console.log('saveSchool function initiated');
  var schoolData = angular.copy($scope.schoolsModal);
  $http.post('data/data.php', schoolData).error(function(){
    console.log('Did not post data to data.php');
  });
};

PHP脚本需要在其自己的文件中,因为我希望最终有多个帖子功能并在收到数据时对其进行解析:

if($_SERVER['REQUEST_METHOD']=='POST'){
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
echo $postdata;

}

PHP代码工作正常,但我无法将数据路由到需要的位置。我不想将所有帖子发送到if语句。任何想法,我是AngularJS和PHP的新手,并尽我所能来接这个。

1 个答案:

答案 0 :(得分:0)

从我所做的项目中考虑这个例子。它只有1个参数'status',但显然你可以将所有参数添加到像这样的对象

postFavorite: function(id, type, record, resource) {
  var xsrf = $.param({status: record.prop});

  $http({
    method: 'POST',
    url: this.api_base + '/favorites/'+type+'/'+id,
    data: xsrf,
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},                 
    withCredentials: true
  }).success(function(data, status, headers, config){
    if(data.success){
      console.log("Success:", data, status, headers, config);
    }
  });
},