如何从AngularJS发送的PHP中读取POST请求数据

时间:2014-04-26 07:29:11

标签: php angularjs rest

我正在尝试从我的角度js发出一个帖子请求,如下所示

    var postData={
            firstName:'VenuGopal',
            lastName:'Kakkula'
    };
    postData=JSON.stringify(postData);
    $http({method:'POST',url:'http://localhost/blog/posttest.php?insert=true',data:postData,headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
        .success(function (data,status,headers,config) {
            alert('Success' + data); 
        })
        .error(function (data, status,headers,config) {
            // uh oh
            alert('error' + status + data);
        });

我不确定如何在PHP REST Web服务中读取此POST数据。

 <?php
header("Access-Control-Allow-Origin:*");
header('Access-Control-Allow-Headers:Content-Type');
header("Content-Type:application/json");
if(!empty($_GET['insert']))
{
    $result=json_decode($_POST['firstName']);
    deliver_response(200,"Got the Post data","GotData $result");
}
function deliver_response($status,$statusmsg,$data)
{
    header("HTTP/1.1 $status $statusmsg");
    $response['status']=$status;
    $response['status_message']=$statusmsg;
    $response['data']=$data;
    $json_response=json_encode($response);
    echo $json_response;
}

&GT;

我尝试了以下选项

json_decode($_POST['firstName'])
json_decode($_POST['data'])
json_decode($_POST['[postData'])

他们都没有返回数据,它总是在第10行的F:\ xampp \ htdocs \ Blog \ posttest.php中返回错误Undefined index:firstName

任何人都可以帮我解释如何读取php文件中发送的POST请求数据。

2 个答案:

答案 0 :(得分:0)

最有可能的原因是您提交的JSON数据并非按标准表单数据自动填充到$ _POST变量中。

解决方法是手动将输入解析为变量以供使用。

示例:

<?php
  $args = json_decode(file_get_contents("php://input"));
  echo $args->firstName;
?>

答案 1 :(得分:0)

您也可以在不更改服务器中的代码的情况下解决此问题,并以常规方式使用$_POST。在此解释:http://victorblog.com/2012/12/20/make-angularjs-http-service-behave-like-jquery-ajax/