gpt4 book ai didi

javascript - 如何通过$http从AngularJs(前端)读取json数据到Grails(服务器端)

转载 作者:行者123 更新时间:2023-12-03 08:54:55 26 4
gpt4 key购买 nike

我必须通过 $http 服务方法将 json 数据从 Angular 发送到 Grails。 JSON数据已发送至服务器。但在服务器端它不会打印参数值。我是 Grails 新手。

我的代码:

Controller :

$(function(){

gateApp.factory('saveCreateToServer', function($http){
return {
saveDataToServer:function(taskCreateFormData){
console.log(taskCreateFormData);

return $http({
method : 'POST',
url : 'save',
data : taskCreateFormData,
})
}
}
});

gateApp.controller('moveTaskRuleDefCtrl', function($scope, saveCreateToServer){
$scope.saveCreate=function() {
var reqData = angular.toJson($scope.taskCreateForm);
saveCreateToServer.saveDataToServer(reqData).success(function(data) {
});
}
});
})

在服务器端:

 def save(params){
println "<<<<<<<<<uu<<<<<<<<<"+params
}

最佳答案

当您使用 $httpdata 键发布数据时,数据不会作为查询或表单数据发送,而是使用正文参数发送。所以你不能用params读取它,只需使用request.JSON:

def save() {
Map requestData = request.JSON
println "Data: " + requestData
println "Data: " + requestData.firstName
}

此外,您不必将对象转换为 JSON 字符串,只需传递数据即可:

$http({
method: "POST",
url: "/save",
data: {firstName: "John", lastName: "Doe"}
});

关于将数据作为表单数据传递的更新

是的,您绝对可以这样做,这样您就不必更改服务器端代码。所以基本上,Angular 默认情况下发送 Content-Typeapplication/json 的数据,因此 Grails 将其作为 request.JSON 接收。因此只需将其更改为 application/x-www-form-urlencoded:

$http({
method: "POST",
url: "/save",
data: {firstName: "John", lastName: "Doe"},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});

现在,这些参数将在 Grails Controller 中作为 params 提供。

关于javascript - 如何通过$http从AngularJs(前端)读取json数据到Grails(服务器端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32546702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com