?request body?で 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 に入ります!!!
次の 2 つの質問を読んだ後: jQuery を使用して POST-body を JSON オブジェクトに設定する
.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で何か間違ったことをしているに違いありません。
更新: この馬鹿は実際に同じ問題を抱えていたようです: grails 2.0 で JSON を取得する方法ですが、jQuery の問題に直面する代わりに、cURL と reqeust.JSON を使用しました。なんて怠け者だ。