7

response.responseTextextjs 4 でサーバーからの応答を取得する際に問題が 1 つあります。

以下は、ストアをロードするための私のコードです。

store.load({
    params: {
        'projectid': this.projectid
    },
    callback: function (records, operation, success, response) {
        console.log(records);
        console.log(response.responseText);
    }
});

実際に以下の関数でリクエストしたところ、ちゃんと取得できましたreponse.responseText

Ext.Ajax.request({
    url: 'login/GetLoginCheck.action',
    method: 'GET',
    params: {
        'username': values['username'],
        'password': values['password']
        },
    scope: this,
    success: function(response) {
        Ext.Msg.alert(response.responseText);
        var redirect = response.responseText;
        window.location.href = "" + redirect + ".jsp";
    },
    failure: function(response) {
        Ext.Msg.alert('INVALID USERNAME OR PASSWORD');
    }
});

response.responseTextコールバック関数を持つ store.load() からどのように取得できるか教えてください。

4

6 に答える 6

8

コールバックには3つのパラメーターがあります...これを試してください:

store.load({
    params: {
        'projectid': this.projectid
    },
    callback: function (records, operation, success) {
        console.log(operation.response.responseText);
    }
});
于 2012-04-20T11:14:15.530 に答える
1

これを試すこともできます..

Ext.create('Ext.data.Store',{
    fields[],
    proxy:{url:'store_url.json', reader:{type:'json',root:'data'}},
    autoLoad:true,
    listeners:{
        load:function(store, record, success, opts){
            var response_text = store.proxy.reader.rawData;
            console.log(response_text);
        }
    }
})
于 2014-04-01T04:00:24.307 に答える
1

を使用して同様の問題に直面しましたModel.load(...)が、私の場合operation.responseは定義されていませんでした。だから、私はそれを取得する別の方法を見つけました:

Model.load(1, {
    success: function () {
        // I haven't tested inside this callback yet
    },
    failure: function (record, operation) {
        var response = operation.request.proxy.reader.rawData;
        alert(response.message);
    }
});
于 2013-05-24T11:22:57.960 に答える
0

messagePropertyに設定する必要があり proxy readerます'Ext.data.Store'

            reader: {
                type: 'json',
                root: 'myDataList',
                totalProperty: 'myTotalRecord',
                successProperty: 'mySuccess',
                messageProperty : 'myMsg'
            }

when mySuccessreturn falsethen invoke callback: function.

    store.load({
        params: {start: 0, limit: 15},
        callback: function (records, operation, success) {
            if (!success) {
                try {
                    Ext.Msg.alert('Sorry !', operation.getError());
                    // operation.getError() returns myMsg value
                }catch (e){
                    Ext.Msg.alert('Exception !', e);
                }
            }
        }
    });

これは、Java サーブレットから返された json です。

    Map<String, Object> myDataMap = new HashMap<>(3);
    try {
        // Something
        myDataMap.put("mySuccess", true);
        myDataMap.put("myMsg", "Whats up khomeni !");
    } catch (Exception e) {
        myDataMap.put("mySuccess", false);
        myDataMap.put("myMsg", "Whats wrong with me.");
    }
    String json = new Gson().toJson(myDataMap);
于 2017-01-02T07:12:44.900 に答える
0

extjs 3.4 では、これを使用できます。

this.historyInvoiceHeaderGrid.store.load({
        params:{start:0, limit:20},
        callback: function (records, operation, success) {
            console.log(this.reader.jsonData);
        }});

このプロパティstore.reader.jsonDataは完全な応答を返します。

extjs 3 で役に立つかもしれません。

于 2013-11-21T06:46:58.820 に答える
0

Extjs 4.xでは、このように動作しています

myStore.load({
        url: 'myurl',
        method: 'GET',
        callback: function(records, operation, success) {
        var jsonStr = Ext.JSON.decode(operation.response.responseText);
            alert(jsonStr.message);
         }
});

Extjs 5では、次のようにする必要があります

myStore.load({
        url: 'myurl',
        method: 'GET',
        callback: function(records, operation, success) {
 var message=forecastMethodStore.getProxy().getReader().rawData.message;
         }
});

ただし、ここでの重要な点は、Java 側からの JSON 応答にメッセージを設定する必要があるということです。

サンプル: {"ルート":[]、"メッセージ":"重複"}"

これが誰かを助けることを願っています。

于 2015-03-18T15:42:24.640 に答える