angularjs使用$ http.post到PHP但获得空数组

时间:2015-06-02 16:30:32

标签: javascript php angularjs post

现在我有一个基本的帖子请求,使用角度为$ http的服务。我在console.log中看到一切状态为200(成功),但在PHP中没有运气。我尝试过使用JSON_decode,我试过$ _POST(var_dump)没有运气。如果您能想到解决方案,请提供帮助。

app.js

 var postData={
            firstName:'something',
            lastName:'here'
    };
    postData=JSON.stringify(postData);
    $http({method:'POST',url:'sendmail.php',data:postData,headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
        .success(function (data,status,headers,config) {
            console.log('Success' + data); 
        })
        .error(function (data, status,headers,config) {
            // uh oh
            console.log('error' + status + data);
        });

sendmail.php

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

在我的php文件中,我收到以下错误。

注意:尝试在第3行的/Applications/MAMP/htdocs/my-new-project/sendmail.php中获取非对象的属性

然而,在我的console.log中,我得到了:

Successsomething

另外,我有一个有相同问题的实时网站。

重申无论我做什么,(添加标头,JSON解码)PHP数组仍为空。

2 个答案:

答案 0 :(得分:1)

当您在AngularJS中使用$ http.post()时,您可以从$ _POST数组中获取PHP中的参数,如:

echo $_POST['firstName'];

如果$ _POST为空,那么你在其他地方就会出现问题。

尝试隔离您的问题。 您可以使用Postman,HTTPRequester或任何其他Firefox / Chrome插件来模拟对PHP脚本的请求。

首先使您的PHP脚本工作,然后使您的AngularJS帖子请求有效。

答案 1 :(得分:0)

这实际上与Angular如何传递数据有关。默认情况下,序列化为JSON格式,这会产生PHP问题。

我会假设您的数据来自某些输入或类似的东西。在表单字段

上使用ng-model更好

基本上,您必须在请求中传递自定义标头。在这段代码中,我只使用一个输入:

$http({
  method  : 'POST',
  url     : 'your_url',
  data    : 'data-name=' + $scope.yourValue,//in PHP then you look for $_POST['data-name']
  headers : {'Content-Type': 'application/x-www-form-urlencoded'}
}).then(
  // success callback
  function(response){
    // success code
  },
  // error callback
  function(response){
    // success code
  }
);

为了更好地掌握如何做到这一点,请阅读本文:

Forms in AngularJS