【问题标题】:Error with $http, passing parameter transformRequest$http 出错,传递参数 transformRequest
【发布时间】:2016-02-29 00:48:51
【问题描述】:

我正在尝试使用 angularjs 将 (email,role,home) 之类的数据发布到我的服务器,但是当我运行该程序时,它会显示一个 @987654322 @like this which is following as....

ReferenceError: transformRequestAsFormPost is not defined
    at n.register [as send] (sectn.js:7)
    at sectn.js:72
    at n.$eval (angular.js:14466)
    at n.$apply (angular.js:14565)
    at register (sectn.js:71)
    at HTMLInputElement.onclick (get1.html:29)

要清除我的错误,我应该在我的程序中添加什么。和我的剧本 是

var app = angular.module('mainApp', []);

app.controller('register', function ($scope, $http) {

    $scope.send = function register() {
        alert("test");
        $http.post("http://52.77.16.197:8000/subscribe/", transformRequest = transformRequestAsFormPost, data = JSON.stringify({ email: $scope.email, role: $scope.role, home: $scope.home }))
            .success(function (response) {
                alert("hi");
                $scope.persons = data;
            }).error(function (response) {
                if (response.message == "already_subscribed") {
                    alert("already_subscribed");
                }
                else {
                    alert("error");
                }
            });
    }

});

   angular.module('mainApp')
    .factory("transformRequestAsFormPost",
        function () {
            function transformRequest(data, getHeaders) {
                var serializeData = function (obj, result, keyName) {
                    if (typeof (keyName) === 'undefined') {
                        keyName = null;
                    }
                    var cloneObj = JSON.parse(JSON.stringify(obj));
                    $.each(cloneObj, function (idx, v) {
                        if (v instanceof Object) {
                            var newIdx = encodeURIComponent(idx);
                            var newKeyName = keyName === null ? newIdx : keyName + "[" + newIdx + "]";
                            serializeData(v, result, newKeyName);
                        }
                        else {
                            var key = encodeURIComponent(idx);
                            if (keyName !== null) {
                                key = keyName + "[" + key + "]";
                            }
                            result.push(
                                key + "=" + encodeURIComponent(v)
                                );
                        }
                    });
                };
                var result = [];
                var headers = getHeaders();
                headers["Content-type"] = "application/x-www-form-urlencoded; charset=utf-8";
                serializeData(data, result);
                return result.join("&");
            }
            return (transformRequest);

        });

app.config(['$httpProvider', function ($httpProvider) {
    $httpProvider.defaults.useXDomain = true;
    //$httpProvider.defaults.withCredentials = true;
    delete $httpProvider.defaults.headers.common["X-Requested-With"];
    $httpProvider.defaults.headers.common["Accept"] = "application/json";
    $httpProvider.defaults.headers.common["Content-Type"] = "application/json";

}
]);
function register() {
    alert("submit");
    var scope = angular.element(document.getElementById("reg")).scope();
    scope.$apply(function () {
        scope.send();
    });
}

【问题讨论】:

  • 这个问题真的可以使用更好(更具体)的标题......
  • 错误的哪一部分你不明白?如果你不注入它......它没有定义
  • 似乎您只需要使用内置的序列化程序并将适当的参数传递给$http.post
  • 代码有很多问题,很难找到开始的地方。请在问题本身中包含所需的行为、特定问题或错误以及重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example

标签: javascript angularjs html


【解决方案1】:

你正在尝试使用工厂服务作为一个函数,而这个服务函数本身是匿名的

你的函数必须是这种格式

(function(data, headersGetter, status))

阅读this => 转换请求和响应

【讨论】:

    猜你喜欢
    • 2014-07-30
    • 2016-10-08
    • 2013-06-12
    • 2018-02-04
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多