簡體   English   中英

如何通過$ http從AngularJs(前端)到Grails(服務器端)讀取json數據

[英]How to read json data from AngularJs (front end) to Grails (server side) through $http

我必須通過$ http服務方法將JSON數據從Angular發送到Grails。 JSON數據已發送到服務器。 但是在服務器端,它不會顯示參數值。 我是Grails的新手。

我的代碼:

控制器:

$(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控制器中作為params提供。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM