【问题标题】:json data on server side (grails controller) is null服务器端(grails 控制器)上的 json 数据为空
【发布时间】:2012-05-17 12:45:57
【问题描述】:

我以 JSON 格式将数据发送到服务器,如下所示:

        var username = $("#usernameField").val();
        var email = $("#emailField").val();
        var password = $("#passwordField").val();
        var parameters = {
            'username':username,
            'email':email,
            'password':password
        };
        $.ajax({  
            type: "POST",  
            dataType:"JSON",
            url: doRegistrationUrl,  
            data: parameters,  
            success: function(answer) {  
                console.log(answer);
            }  
        });  

这是获取数据的函数(grails 控制器)

def doRegistration() {
    def userdata = request.JSON;
    printf("DataInController: "+userdata);
    render userdata.username;
}

网址

var doRegistrationUrl = '${createLink(action:"doRegistration", controller:"registration")}';

然而,用户数据始终为空,数据不会到达服务器。我不明白为什么。有人可以帮忙吗?非常感谢。

【问题讨论】:

  • 感谢您的回复,但没有这样做
  • 您实际上是在发送请求吗?您是否发送到加载 js 的同一个域?
  • 尝试 .... def doRegistration(request)
  • doRegistration(request)没用,和doRegistration(def request)一样,不知道是不是真的发送请求,怎么查?我认为这是同一个域,我添加了 doRegistrationUrl

标签: jquery json grails


【解决方案1】:

您的数据参数只是通过 POST 发送的普通 HTTP 请求参数。你处理它就像所有其他控制器动作一样。试试:

def doRegistration() {
    def userdata = params
    printf("DataInController: "+userdata);
    render userdata.username;
}

【讨论】:

  • 是的,成功了,谢谢。我不明白为什么 params.parameters 不起作用。
  • @dan params 是一个 GrailsParameterMap 对象,它是一个映射。使用常规语法 params['parameters'] 等于 params.parameters 并且由于您没有 parameters 键,所以它是空的。
猜你喜欢
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 2013-01-01
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多