注意:我正在使用Grails 2.5.5。
这是我在控制器中的方法(我知道save()不应是GET,但我只是在测试事情):
def save(Test cmd) {
println cmd.duration
println params.duration
}
这是我的客户代码:
let data = JSON.parse($('#req').val());
$.ajax({
url: url,
data: data,
method: 'GET',
contentType: 'application/json'
});
在执行此流程时,在控制器端,cmd.duration
不会打印从客户端发送的内容(相反,由于将duration键入为int,因此它是默认值零)。另一方面,params.duration
会打印从客户端发送的内容。
因此,这表明数据发送方式不是问题,而与某些数据绑定问题有关?
此外,仅供参考,POST与上述服务器端代码完全兼容。只要我相应地更改客户端代码(更改方法类型和JSON字符串化),就可以适当地填充命令对象:
let data = JSON.parse($('#req').val());
$.ajax({
url: url,
data: JSON.stringify(data),
method: 'POST',
contentType: 'application/json'
});
我知道那里也有类似的问题,但是似乎大多数问题都与POST请求有关。所以这有点不同。
感谢您的帮助!
答案 0 :(得分:0)
似乎我只需要删除GET请求的客户端ajax调用中的contentType
。一旦这样做,一切都会按预期进行。
不确定这是否是预期的行为,但目前对我有效。