0

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 は虹と蝶のようにこれを行います (うまくいきます)。

4

3 に答える 3

1

Ajaxでtodata = JSON.stringify(data);の使用と変更を修正しました。dataparams

于 2013-07-28T18:02:46.617 に答える
0

次の方法でjsonデータを抽出できます。

def jsonObject = request.JSON

編集:すでに解析されていることを追加するJSONObject必要があるため、呼び出す必要はありませんJSON.parse()

于 2013-07-25T15:34:30.310 に答える