0

AngularJS:1.4.X
方案1:工作正常
方案2:抛出线xhr.send 404错误(isUndefined(后)零:柱);在angular.js休息web服务调用在AngularJS(许诺)

我想添加内置的角度缓存到我们现有的应用程序,正如我在场景1中提到的,我们在工厂'restFactory'中使用其余调用,并将工厂注入到控制器'bookController',承诺是解决和数据加载罚款。

厂:restFactory

(function() { 
    "use strict"; 
    angular.module('myApp').factory("restFactory",['$http','confi', function($http,config){ 

    function getBooks(){ 
     return $http.get(config.serverName+"bookshelf/rest/books/data/geRestBooks"); 
    } 
    return { 
     getBooks : getBooks 
    }; 
}]); 
})(); 

控制器:BookController的

$scope.getComicbooks = function() { 
     restFactory.getBooks().then(function(response) {   
      $scope.names = response.data; 
     }, function(error) { 
      $scope.error = error; 
      $scope.names = []; 
     }); 
    }; 

现在,在方案2中,我改变了厂家的服务电话与更多的细节提出异议。但我从控制器获得异常,而解决的承诺(我只添加了改变的代码)

function getBooks(){ 
    return $http.get({ 
    cache: true, 
    method: 'GET', 
    url : config.serverName+"bookshelf/rest/books/data/geRestBooks" 
    }); 
} 

错误:angular.js:10765 GET http://127.0.0.1:53814/views/[object%20Object] 404(未找到)

网络选项卡:
enter image description here 在场景#1,这将是一个方法调用getBooks

+1

你在哪里打电话http://127.0.0.1:53814/views/? –

+0

@AdamWolski:我在视图目录下的索引页中使用'bookController',但是当我添加console.log时,它会在它解析restFactory.getBooks()。之前中断。然后(function(response){'。 –

+0

你在网络标签中看到了这个请求吗? –

回答

3

如果你要指定方法,那么你应该只使用$http构造方法,而不是get方法。

而不是

function getBooks(){ 
    return $http.get({ 
     cache: true, 
     method: 'GET', 
     url : config.serverName+"bookshelf/rest/books/data/geRestBooks" 
    }); 
} 

尝试

function getBooks(){ 
    return $http({ 
     cache: true, 
     method: 'GET', 
     url : config.serverName+"bookshelf/rest/books/data/geRestBooks" 
    }); 
} 
+1

优秀的catch!OP代码失败的原因是因为['http.get'](https://docs.angularjs.org/api/ng/service/$ http#get)期望第一个参数是一个URL字符串。由于OP传递一个对象,他们得到一个对象的字符串版本,即'[object Object]' – Phil

+2

或者,OP可以使用'$ http.get(config.serverName +“bookshelf/rest/books/data/geRestBooks”, {cache:true})' – Phil

+0

@Phil - 我实际上更喜欢你的建议,并且会提及它,但我认为我应该坚持帮助解决这个问题,因为之前我已经因为建议替代品而受到惩罚。 – GPicazo