0
与POST请求的执行问题(angularjs($ HTTP))
我试图执行一个POST请求,但出现以下错误:
Error: Unexpected request: POST http://192.168.88.54:3000
No more request expected
at $httpBackend (file:///Users/vasyasemenov/workspace/tamua/ogogo-frontend/build/vendor/angular-mocks/angular-mocks.js:1176:9)
at sendReq (file:///Users/vasyasemenov/workspace/tamua/ogogo-frontend/build/vendor/angular/angular.js:7721:9)
at serverRequest (file:///Users/vasyasemenov/workspace/tamua/ogogo-frontend/build/vendor/angular/angular.js:7455:16)
at wrappedCallback (file:///Users/vasyasemenov/workspace/tamua/ogogo-frontend/build/vendor/angular/angular.js:10696:81)
at wrappedCallback (file:///Users/vasyasemenov/workspace/tamua/ogogo-frontend/build/vendor/angular/angular.js:10696:81)
at file:///Users/vasyasemenov/workspace/tamua/ogogo-frontend/build/vendor/angular/angular.js:10782:26
at Scope.$eval (file:///Users/vasyasemenov/workspace/tamua/ogogo-frontend/build/vendor/angular/angular.js:11697:28)
at Scope.$digest (file:///Users/vasyasemenov/workspace/tamua/ogogo-frontend/build/vendor/angular/angular.js:11525:31)
at Scope.$apply (file:///Users/vasyasemenov/workspace/tamua/ogogo-frontend/build/vendor/angular/angular.js:11803:24)
at HTMLButtonElement.<anonymous> (file:///Users/vasyasemenov/workspace/tamua/ogogo-frontend/build/vendor/angular/angular.js:17690:21)
我执行POST请求:
angular.module('App')
.config(['$httpProvider',
function($httpProvider) {
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
}
])
.service('API', function API($http, $q, PROD, PROD_HOST, DEV_HOST, API_TOKEN) {
var self = this;
self.host = (PROD ? PROD_HOST : DEV_HOST);
self.performRpcCall = {
post: function(url, params) {
var deferred = $q.defer();
var data = {
jsonrpc: '2.0',
params: params,
method: url
};
$http.post(self.host, data).success(function(data) {
if(data.result) {
deferred.resolve(data.result);
}else{
deferred.reject(data.error);
}
}).error(function(data, status, headers, config) {
deferred.reject(data);
});
return deferred.promise;
}
};
self.registerUser = function(params) {
params.token = API_TOKEN;
return self.performRpcCall.post('/api/users', params);
};
});
哪里错误?谢谢
你为什么在'$ http.post'调用时使用'$ q'? '$ http'已经返回一个promise,只是返回那个成功或者错误链接的数据。 – 2014-10-29 13:10:22
你知道“延迟反模式”是什么吗?看看** [这](http://stackoverflow.com/questions/23803743/what-is-the-deferred-antipattern-and-how-do-i-avoid-it)** – Josep 2014-10-29 13:20:28
你是单位测试这个?我在错误输出中看到'$ httpBackend',这是一个模拟对象来测试'$ http'请求,而不必实际联系服务器。 https://docs.angularjs.org/api/ngMock/service/$httpBackend – 2014-10-29 13:35:04