sencha では AJAX は常に成功しますが、grails では回復しようとすると失敗します。で回復するはずですがdef data = params.data
、機能しませんdef data = params
でした。
sencha のコントローラー (保存時)
onSave: function(button, e, eOpts) {
var name = Ext.getCmp('name').getValue();
var description = Ext.getCmp('description').getValue();
var data = {};
data.name = name;
data.description = description;
Ext.Ajax.request({
type: 'POST',
contentType:'application/json',
dataType: 'jsonp',
data: data,
crossDomain: true,
url: 'http://localhost:8080/TryIt/product/newProduct',
success: function(response, opts) {
console.log('server-side success with status code ' + response.status);
},
failure: function(response, opts) {
console.log('server-side failure with status code ' + response.status);
},
error: function(msg){
alert(msg);
}
});
Grails のコントローラー
def newProduct() {
def data = JSON.parse(data)
def newP = new Product(name: data.name, description: data.description)
if (newP) {
newP = newP.save(flush: true)
println "saved!"
println data.name
println data.description
} else {
println "error"
}
return result as JSON
}
問題は、grails に渡されたデータを回復する方法です。そうそう、js と jquery は虹と蝶のようにこれを行います (うまくいきます)。