2013-10-14 10 views
0

Хорошо, поэтому у меня есть приложение AngularJS с Laravel 4 в качестве backend. То, как я хочу развиваться, - это запустить Laravel на отдельном сервере (через сервиз artisan) и угловатым на отдельном, с тем, что йомен собирает для меня весь этот хрюкающий сервер.

Однако после попытки получить данные из бэкэнда Laravel 4 (который служит REST api) через Angulars $ http все, что я получаю, является сообщением об ошибке 0. Вот мой код:

Угловые службы REST:

app.factory('RestService', function($http){ 
    var restUrl = 'http://localhost:8000/api/v1/tags';//<-- rest api served with php artisan 

    return { 
     getResource: function(){ 
     return $http({method: 'get', url: restUrl}) 
     } 
    } 
}); 

Угловой контроллер:

app.controller('TagCtrl', function($scope, RestService){ 
    $scope.getTagList = RestService.getResource() 
     .success(function(){ 
     console.log('Success!'); 
     }) 
     .error(function(data, status, headers, config){ 
     console.log(data);//<--returns nothing 
     console.log(status);//<--returns 0 
     console.log(headers);//<-- returns function 
     console.log(config);//<-- returns object 
    }); 

}); 

А вот мой Laravel 4 маршрут:

Route::get('tags', function(){ 

     return "This is a temporary message to test routing"; 

    }); 

Теперь, как все это работает, если Я не пользуюсь сервисом grunt и ремесленником и помещаю все это в одну и ту же папку (угловая внутренняя папка larvels и т. Д.). который я намереваюсь делать, когда я перехожу к производству, но потому, что я хочу минимизировать и делать другие вещи с ворчанием, прежде чем я хочу, чтобы эти элементы были разделены на данный момент.

С некоторыми поисковыми системами, я предполагаю, что проблема связана с запросом CORS (запрос на перекрестный поиск), но я не могу понять, как решить проблему в этой настройке.

+0

Запустите его в Chrome с помощью инструментов разработчика. Если клиент/api скрипта находится на локальном хосте, проблем с CORS нет. – Whisher

ответ

0

попытаться добавить $ HTTP службу в вашем заводе декларации:

app.factory('RestService', function($http){ 
+0

Извините, что отсутствующий $ http был опечаткой. Он находится в фактическом коде. – Tomkarho

0

Попробуйте это:

 $scope.url = 'http://localhost:8000/api/v1/tags'; 
     $scope.content = []; 

     $scope.fetchContent = function() 
     { 
      $http.get($scope.url).then(function(result) 
      { 
       $scope.content = result.data; 
      }); 
     } 

     $scope.fetchContent(); 

попробовать также возвращая массив данных. + вернуть код ответа тоже. Например:

return Response::json(array(
    'message' => 'This is a temporary message to test routing'), 200); 
Смежные вопросы