Нужно передать JSON с ангуляра, вот набросок кода:
mainApp.controller('NewsViewController', function($scope, $http) {
$scope.getPosts = function(){
var paramSearch = '{"name": "wiki", "field": ["name", "owner", "description"]}';
$http.get('http://localhost:8088/api/rest.php/items/', paramSearch)
.success(function(res, status, headers, config){
console.log(res.data);
});
};
});
Принимаю код в PHP использую Slim framework
$app->get('/items/', function (Request $request, Response $response) {
//$file = 'log.txt';
$input = $request->getQueryParams();
//file_put_contents($file, $input) ;
$sql = 'SELECT DISTINCT items.name, items.link, items.owner, items.date_start, items.date_end, items.description, format_file.format_name FROM items, format_file WHERE items.id_format_file = format_file.id';
if (isset($input['name'])) {
$sql = $sql . ' AND items.name LIKE "%' . $input['name'] . '%"';
}
$rows = DB::fetchAll($sql);
$response->getBody()->write(json_encode([
'data' => $rows
], JSON_UNESCAPED_UNICODE));
return $response;
});
Делаю так, то $request->getQueryParams() возвращает пустоту, я так понимаю он предназначен для обычных параметров в ссылке
Для отправки параметров гет запросом с помощью AngularJS, параметры этого запроса нужно оборачивать в {params: 'тут данные в виде json объекта' }, должно выглядет так: $http.get('myUrl', {params: "мои параметры"})...
пример:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope, $http) {
$scope.getPosts = function () {
var paramSearch = {"name": "wiki", "field": ["name", "owner", "description"]};
$http.get('http://localhost:8080/api/rest.php/items/', {params: paramSearch})
.success(function (res, status, headers, config) {
console.log(res.data);
});
};
});
</script>
</head>
<body ng-app="myApp">
<div ng-controller="myCtrl">
<button ng-click = "getPosts()"> Нажми меня</button>
</div>
</body>
</html>
получается запрос такого вида: http://localhost:8080/api/rest.php/items/?field=name&field=owner&field=description&name=wiki
В браузере нажмите f12 -> network и посмотрите какие данные передаются.
Используйте POST запрос.
$http.post('http://localhost:8088/api/rest.php/items/', data).then(function (response) {
console.log(response);
}, function (response) {
console.log(response);
});
Вы отправляете GET запрос, а нужно POST. Если хотите использовать GET то передавайте параметры в query string.
Пример: http://localhost:8088/api/rest.php/items/?foo=bar&foo2=bar2
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть код, который принимает массив и должен вернуть отсортированный массив из двух элементов, первый - это наименьшее, второй наибольшее...
Добрый вечер! Возникла проблема с решением задачиЕсть 9 блоков (массив mult от 0 до 8)
По определенном событию мне необходимо подгрузить дополнительный файл javascript и, после его загрузки и выполнения, выполнить некое действиеПо...