Как получить параметры, переданные через запрос $ http.get с использованием PHP?
Это мой контроллер:
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'
})
Так что теперь моя консоль выводит «яблоко», когда я перейти к/получить/яблоко.
вы можете попытаться поместить объект javascript вместо строки в качестве параметра в $ http: var make = {make: $ routeParams.phone}; –
никогда не пытайтесь сделать json вручную ... это склонно к ошибкам и намного проще позволить '$ http' сделать это за вас – charlietfl
Почему вы спрашиваете о' file_get_contents'? Я предполагаю, что PHP сказал вам, что он ожидает в качестве первого параметра 'string' (имя файла), и вместо этого вы передаете' array' ('$ _GET'). Это не имеет смысла. BTW, как следует из названия, функция 'file_get_contents' возвращает вам содержимое файла, указанное в имени файла в первом параметре, как' string'. Но вы просто отправляете параметр GET, нет файлов вообще, зачем вы хотите использовать эту функцию? Вы уже получили параметр GET в виде строки в массиве '$ _GET'. –