我有一个控制器,在?request 正文中需要一些 json?并用它做了很棒的事情:
def myController(){
def myAction(){
println "Here is request.JSON: ${request.JSON as JSON}"
println "Here is params: $params"
//do awesome stuff with request.JSON only
return
}
}
所以我可以像这样用 cURL 打这个:
curl -i -H "content-type: application/json" -d "{\"someVariable\":\"Absolutely\"}"
我的 grails 控制器打印:
Here is request.JSON: {"someVariable":"Absolutely"}
Here is params: [controller:'myController', action:'myAction']
到目前为止一切都很好,但是当我尝试使用 jQuery 执行此操作时,它会进入 params !!!
阅读了这两个问题: Setting the POST-body to a JSON object with jQuery
我对如何编写 .js 的最佳猜测是:
var sendMe = {"someVariable":"Absolutely"}
$.ajax({
url: '/myController/myAction',
type: 'POST',
processData: false,
data: JSON.stringify(sendMe),
dataType: 'json',
success: function(data) {
},
error: function(request, status, error) {
}
});
但是当我这样做时,我的控制器会打印:
Here is request.JSON: {}
Here is params: [{"someVariable":"Absolutely"}:, controller:'myController', action:'myAction']
我一定在 jQuery 上做错了什么。
更新:看起来这个白痴实际上遇到了同样的问题:How to get at JSON in grails 2.0但他没有面对 jQuery 问题,而是使用了 cURL 和 reqeust.JSON 的东西。真是个懒惰的家伙。