5

失敗関数で応答メッセージを取得する方法は?

store.sync({
 success : function(){},
 failure : function(response, options){
   console.log(response.responseText); //it does not work, because there is responseText attr in response
 }  
});

応答テキストは次のようになります、

{"success":false,"message":"Test Error"}

誰もが知っている、私にアドバイスしてください。

ありがとう

[編集]

console.log(response); 

それから、

ここに画像の説明を入力してください

4

3 に答える 3

6

あなたがこれを理解したことがあるかどうかはわかりませんが、上記の提案は間違っていると確信しています. ストア プロキシのリクエスト例外を確認する必要があります。

ストアの同期を行う前に呼び出すコードを次に示します。

Ext.Ajax.on('requestexception', function (conn, response, options) {

  if (response.status != 200) {
    var errorData = Ext.JSON.decode(response.responseText);
    Ext.Msg.alert('Creating User Failed',errorData.message);
  }

});

この古い投稿を掘り下げて申し訳ありませんが、同じ苦労をしたばかりなので、上記の回答を見るのは苦痛です.

HTHの。

于 2013-03-21T02:46:10.873 に答える
2

要するに、これらの答えはすべて正しくないか、非効率的です。

  1. Ext.Ajax.on を使用できますが、リクエストの競合状態について心配する必要があります。簡単にトラップできるため、このソリューションは使用しないでください。Ext.Ajax.on は、同期以外の理由で発生する可能性があります。展示物を参照してください。
  2. batch.operations[0].response.responseText も使用できますが、「応答」オブジェクトが常に読み込まれるとは限らないため、これは応答を取得する信頼できる方法ではありません (要求によって異なり、例外がある場合は 404、 500、成功: false など)

展示物

    // This picked up my autocomplete comboboxes load - not what I wanted!
    Ext.Ajax.on({
        requestcomplete: {
            fn: callback,
            scope: this,
            single: true
        },
        requestexecption: {
            fn: callback,
            scope: this,
            single: true
        }
    });

現在のソリューション

これはまだ私が探している応答を持っていませんが、まぁ。

    store.sync({
        failure: function (batch, eOpts) {
            // 'this' is the Ext.data.proxy.Ajax object
            // or whatever proxy you are using
            var data = this.getReader().jsonData,
                raw_data = this.getReader().rawData;
        }
    });

これがケースの完全な例外スタックをどのように処理するかはわかりませんが、発見したサーバー側の例外 (404、500 など) に基づいて投稿を修正します。

于 2013-04-04T23:37:32.553 に答える
2

必要なものは次のとおりです。

store.sync({
    success: function(batch) {
        Ext.Msg.alert('Success!', 'Changes saved successfully.');
    },
    failure: function(batch) {
        Ext.Msg.alert("Failed", batch.operations[0].request.scope.reader.jsonData["message"]);
    }
});
于 2013-02-27T00:55:57.917 に答える