Проблема чтения из моего Slim PHP API через Angularjs с использованием ngResource
Я недавно завершил сборку Slip PHP API, которая прекрасно взаимодействует с моим Android-приложением. Сейчас я занимаюсь созданием веб-интерфейса и не могу понять, как запрашивать информацию через GET с помощью функции запросов ngResource.
Мой файл index.html:
<!doctype html>
<html ng-app="discussApp">
<head>
</head>
<body>
<div ng-controller="topicsController">
<div>{{ topics }}</div>
</div>
<script type="text/javascript" src="js/angular.min.js"></script>
<script type="text/javascript" src="js/angular-resource.min.js"></script>
<script type="text/javascript" src="js/angular-route.min.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</body>
</html>
Мой файл app.js:
var app = angular.module('discussApp', ['ngResource']);
app.controller("topicsController", function($scope, $resource, $http) {
var Topics = $resource("http://api.discussorama.com/v1/topics");
$scope.topics = Topics.query();
});
И информация, которую я пытаюсь прочитать (я успешно сделал это как из расширенного REST-клиента Chrome, так и из браузера и моего приложения для Android), находится по адресу http://api.discussorama.com/v1/topics (Примечание: я я временно отключил мое промежуточное ПО аутентификации в Slim PHP для тестирования с Angularjs). Конечная точка возвращает ответ json, но я не вижу ничего в Angular, кроме "[]". Ссылка на приложение Angular: http://hwaelapps.com/discuss/web если кто-то хотел бы точно узнать, что происходит. Заранее спасибо за помощь. Примечание: я попробовал несколько параметров конфигурации ngResource, включая urlencode, но он все еще не получает данные, поэтому я удалил все это, и весь код был таким же, как и в вопросе.
1 ответ
Ответ был в журнале консоли все время. Ошибка, которую я получал, была:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
Решение было просто добавить
header("Access-Control-Allow-Origin: *");
в файл index.php моего Slim API. Я предполагаю, что мой общий хост не настроен для CORS.