PHP - 从AngularJS $ http.get请求中获取params

时间:2016-01-11 23:25:50

标签: php angularjs xmlhttprequest

如何使用PHP检索通过$ http.get请求传递的参数?

这是我的控制器:

app.controller('phonesCtrl', function ($scope, $http, $routeParams) {

    $scope.make = $routeParams.make;
    console.log($routeParams); // Console displays 'Object {make: "apple"}'
    console.log($scope.make); // Console displays 'apple'

    $http({
        method: 'POST',
        url: 'tools/get.php',
        params: $routeParams, // Already an object: "{"make" : apple}"
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    })
    .then(function (response) {
        $scope.phones = response.data;
    });
});

我的PHP尝试:适用于$ http.post,但是有些东西告诉我我不能使用file_get_contents函数来做同样的事情。

<?php

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

var_dump($data); // Outputs NULL
var_dump($_POST["make"]); // Outputs NULL
var_dump($_POST); // Outputs empty array

$con = new PDO('mysql:host=localhost;dbname=mydb', 'root', 'root');

$stmt = $con->prepare("SELECT * FROM phones WHERE make = ?");
$stmt->bindParam(1, $make);
$stmt->execute();

$result = json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));

print_r($result);

?>

我也在使用$routeProvider服务来保持我的链接干净。起初我意识到控制台正在输出空白对象,所以我将配置更改为:

.when('/get/:make', { // Added /:make
    templateUrl: 'tools/get.php',
    controller: 'phonesCtrl'
})

因此,当我导航到/ get / apple时,我的控制台输出“apple”。

2 个答案:

答案 0 :(得分:1)

在PHP中使用

$_GET["make"]

获得参数。

答案 1 :(得分:0)

如果你阅读了PHP $ _POST文档here,你可以找到

  

使用 application / x-www-form-urlencoded [您正在使用的]或multipart / form-data作为时,通过HTTP POST方法传递给当前脚本的关联变量数组HTTP Content-Type请求。

您要做的是传递带有POST参数的GET请求。您可以像www.yoursite.it/page.php?name=Matteo一样传递它,然后将变量与$name = $_GET['name']一起使用,或者按照自己的方式传递,但在POST中如此:

$http({
method: 'POST', //CHANGE THIS FROM GET TO POST
url: 'tools/get.php',
params: {
    name: 'Matteo' //USE PROPER JAVASRIPT OBJECTS
},
headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
}
})

然后你得到$name = $_POST['name']

的变量