Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails:为什么GET请求中的JSON没有绑定到控制器操作中的command对象?_Grails_Grails 2.0_Grails Controller - Fatal编程技术网

Grails:为什么GET请求中的JSON没有绑定到控制器操作中的command对象?

Grails:为什么GET请求中的JSON没有绑定到控制器操作中的command对象?,grails,grails-2.0,grails-controller,Grails,Grails 2.0,Grails Controller,注意:我使用的是Grails2.5.5 这是我在控制器中的方法(我知道save()不应该是GET,但我只是在测试): 这是我的客户代码: let data = JSON.parse($('#req').val()); $.ajax({ url: url, data: data, method: 'GET', contentType: 'application/json' }); 在控制器端执行此流时,cmd.duration不会打印从客户端发送的内容(而是默

注意:我使用的是Grails2.5.5

这是我在控制器中的方法(我知道save()不应该是GET,但我只是在测试):

这是我的客户代码:

let data = JSON.parse($('#req').val());
$.ajax({
    url: url,
    data: data,
    method: 'GET',
    contentType: 'application/json'
});  
在控制器端执行此流时,
cmd.duration
不会打印从客户端发送的内容(而是默认值零,因为duration被键入为int)。另一方面,
params.duration
会打印从客户端发送的内容。
这表明数据的发送方式不是问题,而是与数据绑定问题有关

此外,仅供参考,POST与上述服务器端代码配合使用效果非常好。只要我相应地更改客户机代码(更改方法类型并字符串化JSON),就会正确填充command对象:

我知道也有类似的问题,但它们中的大多数似乎都是处理POST请求的问题。所以这有点不同


感谢您的帮助

看起来我只需要删除客户端的ajax调用中GET请求的
contentType
。一旦我这样做了,一切都按预期进行

不确定这是否是预期的行为,但目前它对我有效

let data = JSON.parse($('#req').val());
$.ajax({
    url: url,
    data: data,
    method: 'GET',
    contentType: 'application/json'
});  
let data = JSON.parse($('#req').val());
$.ajax({
    url: url,
    data: JSON.stringify(data),
    method: 'POST',
    contentType: 'application/json'
});