1

sencha touch 2でストアが読み取ったjson-stringを出力する方法はありますか?

私の店はレコードを読んでいないので、どこが間違っているのかを調べようとしています。私の店は次のように定義されています:

Ext.define("NotesApp.store.Online", {
    extend: "Ext.data.Store",
           config: {
           model: 'NotesApp.model.Note',
           storeId: 'Online',
           proxy: {
               type: 'jsonp',
               url: 'http://xxxxxx.com/qa.php',
               reader: {
                   type: 'json',
                   rootProperty: 'results'
               }
           },
           autoLoad: false,
           listeners: {
               load: function() {   
                    console.log("updating");
                   // Clear proxy from offline store
                   Ext.getStore('Notes').getProxy().clear();
                   console.log("updating1");
                   // Loop through records and fill the offline store


                    this.each(function(record) {
                             console.log("updating2");
                             Ext.getStore('Notes').add(record.data);

                   });

                   // Sync the offline store
                   Ext.getStore('Notes').sync();
                   console.log("updating3");
                   // Remove data from online store
                   this.removeAll();
                    console.log("updated");
               }

           },
           fields: [
                    {
                    name: 'id'
                    },
                    {
                    name: 'dateCreated'
                    },
                    {
                    name: 'question'
                    },
                    {
                    name: 'answer'
                    },
                    {
                    name: 'type'                    
                    },
                    {
                    name: 'author'
                    }
                    ]
           }
});
4

4 に答える 4

1

次のように、プロキシを介してサーバーから返されたすべてのデータを取得できます。

store.getProxy().getReader().rawData
于 2012-08-07T14:00:01.840 に答える
1

lasaroが提案するように、プロキシを介してサーバーから返されたすべてのデータ(javascriptオブジェクト)を取得できます。

store.getProxy().getReader().rawData

生データのJSON文字列を取得するには(リーダーはJSONリーダーである必要があります)、次の操作を実行できます。

Ext.encode(store.getProxy().getReader().rawData)

//or if you don't like 'shorthands':
Ext.JSON.encode(store.getProxy().getReader().rawData)

ストアロードイベントを処理することによっても取得できます。

// add this in the store config
listeners: {
    load: function(store, records, successful, operation, eOpts) {
        operation.getResponse().responseText
    }
}
于 2013-04-22T10:06:14.867 に答える
0

私の知る限り、構成済みを使用している場合、応答結果を明示的に観察する方法はありません(またはproxyを手動で送信すると、明らかに簡単です)。Ext.Ajax.requestExt.JsonP.request

ただし、ブラウザの開発者ツールから結果を監視することはできます。

Google Chromeの場合:

アプリケーションを開始し、リクエストが完了したと想定したとき。[ネットワーク]タブに切り替えます。左側のパネルで強調表示されているリンクは、データを取得したAPIURLです。そして、右側のパネルで、[応答]を選択します。応答結果がそこに表示されます。何もない場合は、不正なリクエストをトリガーした可能性があります。

開発ツール

お役に立てれば。

于 2012-05-22T18:40:10.747 に答える
0

応答jsonは、Ajaxリクエストで次の形式である必要があります

{results:[{"id":"1", "name":"note 1"},{"id":"2", "name":"note 2"},{"id":"3", "name":"note 3"}]}

idとnameは、モデルNOteのプロパティです。

jsonpの場合、

サーバー側では、「コールバック」から値を取得します。その値には、コールバックメソッドの名前が含まれています。次に、そのメソッド名を結果文字列に連結し、応答を書き込みます。

その場合、json文字列は次の形式になります

callbackmethod({results:[{"id":"1", "name":"note 1"},{"id":"2", "name":"note 2"},{"id":"3", "name":"note 3"}]});
于 2012-05-24T03:28:37.407 に答える