我试图用Angular设置虚拟表单。我已经设置了表单,但我想假装发送的params并查看结果。我认为它被称为序列化参数。
请在成功$scope.message = "Message sent " + $scope.formData
目前返回Message sent [object Object]
,我希望返回Message sent {"order": ["company": "test", "phone": "1111"]}
这是完整的代码
angular.module("app").controller "ContactController", ($scope, $http) ->
$scope.formData = {}
$scope.processForm = ->
console.log $scope.formData
$http(
method: "POST"
url: 'process.php'
data: $scope.formData
).success( (data) ->
# if successful, bind success message to message
$scope.message = "Message sent " + $scope.formData
$scope.formData = ''
).error (status) ->
console.log "An error occured processign form"
# if not successful, bind errors to error variables
$scope.errorFirstName = data.errors.firstName
$scope.errorLastName = data.errors.lastName
答案 0 :(得分:2)
这实际上相当简单。当您在某个对象上调用toString()
时(您在那里做的事情),JavaScript会返回[object Object]
而不是帮助。
这很容易解决,只需将$scope.formData
更改为JSON.stringify($scope.formData)
即可。因此:
$scope.message = "Message sent " + JSON.stringify($scope.formData)
答案 1 :(得分:0)
Zeke的答案比我的简单得多。我打算建议使用这样的函数将JavaScript对象转换为JSON字符串:
function objToJSONString (obj) {
var str = '';
for (var p in obj) {
str += "\"" + p + "\":\"" + obj[p] + "\",";
}
// remove last comma
if(str.length > 0){
str = str.substr(0,str.length-1)
}
return '{' + str + '}';
}
但是,这个功能并非没有它的缺陷;因为它不会处理嵌套对象。