【发布时间】: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