如何使用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”。
答案 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']