2012-06-28 3 views
3

Я недавно начал экспериментировать с AngularJS. Я создаю простое приложение html5, которое обновляет базу данных MySQL.AngularJS и Rest Service

[index.html]

<!DOCTYPE html> 
<html ng-app="MyProject"> 
<head> 
    <title>My Project</title> 
    <link rel="stylesheet" href="css/main.css" type="text/css"> 
    <script src="lib/angular-1.0.1.js"></script> 
    <script src="lib/angular-resource-1.0.1.js"></script> 
    <script src="js/controllers.js"></script> 
    <script src="js/services.js"></script> 
</head> 
<body> 
    <div id="main-content" ng-view> 
</body> 
</html> 

Я использовал тонкий каркас для создания интерфейса Rest. Моя база данных имеет в настоящее время одну таблицу с именем location_types с двумя идентификаторами столбцов и заголовком. Я тестировал сервис Отдых в браузере так под API/locationtypes я получаю следующий JSON:

[{"id":"1","title":"Airport"},{"id":"2","title":"Bus Station"}] 

я создаю службу в AngularJS, используя следующий код:

[services.js]

angular.module('myDB', ['ngResource']). 
factory('LocationTypes', function($resource) { 
    var LocationTypes = $resource('http://localhost/project/api/locationtypes', {}, { query: {method: 'GET', isArray: true}}); 
    return LocationTypes; 
}); 

Я также использую следующий код для создания модуля приложения:

[CONTROLL ers.js]

angular.module('MyProject', ['myDB']). 
config(function($routeProvider) { 
    $routeProvider. 
     when('/locationtypes', {controller: LocationTypesCtrl, templateUrl:'forms/locationtypes.html'}). 
     otherwise({redirectTo:'/locationtypes'}); 
}); 


function LocationTypesCtrl($scope, LocationTypes) 
{ 
    $scope.locationTypes = LocationTypes.query(); 
} 

Проблема заключается в том, что я не получаю никаких результатов после запроса на обслуживание. Когда я отлаживаю, массив locationTypes имеет нулевую длину. Я использую последнюю версию AngularJS [1.0.1]. Что мне не хватает?

ответ

1

Действительно ли ваш URL «http: // localhost/project/api/locationtypes» или это внешний сервер? Если его внешний, то у вас есть проблема с CORS (крест происхождения). Если я не пропущу что-то, это выглядит правильно для меня.

1

Возможно, проблема CORS, как сказал Дэн. Вы можете обойти это, добавив в конфигурацию вашего модуля следующее.

.config(function($httpProvider){ 
    delete $httpProvider.defaults.headers.common['X-Requested-With']; 
}) 

Удаление заголовков, заданных Угловым, должно решить проблему CORS. Вы также должны добавить файл .htaccess в свою папку api. И добавьте это:

Header set Access-Control-Allow-Origin "*"