POST请求(angularjs($http))的实现问题



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时遇到过问题。

为了纠正我过去使用过jQuery的$.params(data),或者。。。

data = {
    someVar : someVal,
    anotherVar : anotherVal
};
return $http({
        method : 'POST',
        url : 'someURL/path/to/api/script',
        params : data,
        headers : {'Content-Type' : 'application/x-www-form-urlencoded'}
    }).success(function(response){
        return (angular.isDefined(response.data.result)) ? response.data.result : response.data.error;
    }).error(function(response){
        return { data : response.data, status : response.status };
    });

当向$http传递配置对象时,data会为params var获取JSONified。当然,您已经使用提供程序设置了标头。还有一个dataconfig属性,我没有使用过,但我认为它也这样做了,只是没有将数据JSONify到字符串中,而是将其作为消息数据合并到标头中。

最新更新