我无法使用$ http将数据从Angular发送到Django

时间:2013-09-05 20:04:19

标签: ajax django angularjs

我正在尝试设置一个向db添加新对象的表单,但首先我要检查一些内容并设置服务器端以获取新记录,但我被冻结了:(

这是我的代码,请试一试:

CTRL

subtitlesApp.controller('AddSubtitleController',
    function($scope, addSubtitle) {
        $scope.saveSubtitle = function(subtitle, addSubtitleForm) {
            if (addSubtitleForm.$valid) {
                var x = addSubtitle.getTitle(subtitle.imdb_id);
                }
        };
    });

服务

subtitlesApp.factory('addSubtitle', ['$http', function ($http) {
    return {
        getTitle: function(imdb_id) {
            $http({
                method: 'POST',
                url:'add_subtitle/',
                data: imdb_id,
            })
            .success(function(data, status, headers, config) {
                console.log(data);
            }).error(function(data, status, headers, config) {
                console.log(imdb_id+'eror')
            });
        }
    }
}]);

这就是我在打印request.POST:

时得到的内容
<QueryDict: {}>

1 个答案:

答案 0 :(得分:0)

您应该让服务返回promise

subtitlesApp.factory('addSubtitle', ['$http', function ($http) {
    return {
        getTitle: function(imdb_id) {
            var promise = $http({
                method: 'POST',
                url:'add_subtitle/',
                data: imdb_id,
            })
            .success(function(data, status, headers, config) {
                console.log(data);
            }).error(function(data, status, headers, config) {
                console.log(imdb_id+'eror')
            });

            return promise;
        }
    }
}]);

消费服务时

var x;
if (addSubtitleForm.$valid) {
    addSubtitle.getTitle(subtitle.imdb_id).then(function(data){
        x = data;
    });
}