Javascript 双重请求
以下是示例设置:Javascript 双重请求,javascript,http,angularjs,Javascript,Http,Angularjs,以下是示例设置: var editor = angular.module("editor",['ngResource']); editor.factory("Provider",function($resource){ return $resource('/api/test/1').get(); }) function ctrl($scope,Provider){ $scope.sections = Provider; } 我的问题是,在firebug中,我看到有两个GET
var editor = angular.module("editor",['ngResource']);
editor.factory("Provider",function($resource){
return $resource('/api/test/1').get();
})
function ctrl($scope,Provider){
$scope.sections = Provider;
}
我的问题是,在firebug中,我看到有两个GET请求被发送:一个在/api/test/1,另一个在/api/test/1/
有什么想法可能导致这种情况吗?为了完整起见,我相信
$http
会在文件夹结构中“短路”,只需抓住您指向的资源,即可在项目中访问,而$resource
则面向与外部源通信,通常是外部RESTful api。在我实现这一点的应用程序中,我经常定义一个变量,我的各种$resource
定义可以在其中访问它,正如您将在我定义的变量API
中看到的那样
在这种情况下,还显示您正在将1
作为某种id传递
var API = 'http://localhost\\:#####/api/';
editor.factory('Provider', function ($resource) {
return $resource(API + 'test/:id', { id: '@id' }, { });
});
然后实施
function ctrl($scope, Provider){
var myVarToPass = 1;
Provider.get({ id: myVarToPass }, function (result) {
//single call here as soon as controller loads
});
}
我发现在
/1
之后添加/#
就解决了问题
更改:
return $resource('/api/test/1')....
致:
您正在创建多个ctrl实例吗?还有一个语法错误,代码中缺少一个。如果使用了多个此类控制器,则将为每个控制器调用函数,在本例中,该函数调用$resource上的get()。如果需要单个实例,请使用服务而不是工厂。否,我使用的是“ctrl”“只有一次,只是用服务尝试了一下,但都是一样的。你能用它制作一个JSFIDLE还是一个plunkr来显示实际的问题?”?到目前为止,我只在我的服务中使用了$http,但没有看到任何双重调用行为。。。虽然我大部分时间都在Chrome上测试,但事实上$http成功了,谢谢!
return $resource('/api/test/1/#')....