gpt4 book ai didi

grails - 如何从Grails Controller中的参数获取 map ?

转载 作者:行者123 更新时间:2023-12-02 14:20:07 25 4
gpt4 key购买 nike

我试图在 Controller 中检索从客户端(通过ajax)以JSON格式发送的复杂对象,但是我不知道如何从参数中获取转换了某些属性的 map 。

例如,假设这是“复杂的” JSON对象(元对象中的项目数是可变的,可以是1、2、3 ...,并且具有变量名):

{ 
language: "java",
meta: {
category: "category1"
}
}

当通过jQuery发送此对象时,在 Controller 中,我在params对象中得到了这个:
[language:java, meta[category]:category1, action: register, controller: myController]

这就是我通过jQuery发送对象的方式。我有几个通话的常用功能:
if (!params) params = {};

var url = this.urls.base+"/"+controller+"/"+action+"?callback=?";
if (params.callback)
url = this.urls.base+"/"+controller+"/"+action+"?callback="+params.callback;
url = url + "&_"+new Date();
delete params.callback;
$.ajax({
url: url,
data: params,
crossDomain:true,
dataType:'jsonp',
cache:false,
ajaxOptions: {cache: false},
jsonp: params.callback?false:true
});

并在我发送的ajax调用的参数中测试我之前编写的JSON对象

如果我尝试在 Controller 中执行params.meta,则会得到一个空对象。
我应该如何从params对象检索 map ?

最佳答案

在客户端,您必须使用POST方法发送数据,并配置jQuery以将其作为JSON发送。喜欢:

data = { 
language: "java",
meta: {
category: "category1"
}
}
$.ajax({
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
})

并以 request.JSON的身份进入服务器端,参见docs: http://grails.org/doc/2.2.0/ref/Servlet%20API/request.html

但是,如果您需要发出跨域请求,则POST方法将不起作用。在这种情况下,您可以将复杂对象作为参数传递,并从字符串在服务器上进行解析。喜欢:
$.ajax({
data: {myjson: JSON.stringify(data)}
})

和:
def myjson = JSON.parse(params.myjson)

关于grails - 如何从Grails Controller中的参数获取 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16685146/

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