Angular $ http帖子没有为PHP正确发布变量

时间:2014-12-08 07:08:01

标签: php jquery ajax angularjs

我的应用程序中api/add有一个PHP服务,您可以通过POST将其传递给rqnamerq告诉服务要执行的功能,因此在我的示例中定义addCity,并将城市插入数据库,name是城市的名称。

所以,话虽如此,这是我的角度代码。我使用ngRoute定义了上面的角度模块。

whereApp.controller('AddCityCtrl', function($scope, $http) {

  $scope.addCity = function() {

    $http({
        method: "POST",
        url: '/api/add/',
        data: { rq:'addCity', name: $scope.name },
        headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        }).success(function (data, status, headers, config) {
            console.log(data); 
        });

    /*
        $.ajax({
            url: "/api/add/",
            type: "POST",
            data: { rq: 'addCity', name: $scope.name },
            dataType: "json"
        })
        .success(function(data) {
            console.log(data);    
        });
    */
  }
});

这就是问题所在。 ajax请求(注释掉的jQuery样式)有效。我想要使​​用棱角分明的风格,因为它是我正在使用的东西以及我正在努力学习的东西。 jQuery ajax调用向我提供了来自服务器端的成功消息,而$ http方法表示未定义rq变量,我通过$_POST['rq']访问该变量。

我已经在谷歌上做过一些研究,但到目前为止只提出像this post那样添加headers: {'Content-Type': 'application/x-www-form-urlencoded'}

任何人都可以告诉我这两个ajax调用之间有什么区别(或者如果还有其他事情我还没有考虑过)?

1 个答案:

答案 0 :(得分:2)

由于它是在php中发送的json数据,你无法通过简单的$ _POST获取它,你需要做这种东西来获得这个发布的数据

$data=file_get_contents('php://input');
$dataobj= json_decode($data);

这里先获取数据,然后将其从json解码为普通对象