注意:我使用的是grails2.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,所以它是默认值0)。另一方面,
params.duration
打印客户端发送的内容。
所以这表明数据的发送方式不是问题,而是一些数据绑定问题?
另外,仅供参考,POST可以很好地与上述服务器端代码配合使用。只要我相应地更改客户机代码(更改方法类型并对JSON进行字符串化),command对象就会得到适当的填充:
let data = JSON.parse($('#req').val());
$.ajax({
url: url,
data: JSON.stringify(data),
method: 'POST',
contentType: 'application/json'
});
我知道也有类似的问题,但似乎他们中的大多数都是处理POST请求的问题。所以这有点不同。
感谢您的帮助!