グリッド内の名前をクリックするたびに取得したサーバー応答データをフォームに入力しようとしています。ほとんどの場合、私はこれを行うことに成功しました。ただし、何らかの理由で、グリッド内の名前を初めてクリックすると、store.proxy.reader.rawDataの「未定義」が表示されます。最初にクリックする名前は関係ありません。常にこれを行います。それ以降のクリックは、予期されたjson文字列を返します。私は問題を解決するためにfirebugを使用しています。
以下は、ajaxリクエストを行うストア「PersonS」のコードです。
Ext.define('CX.store.PersonS',
{
extend: 'Ext.data.Store',
model: 'CX.model.PersonM',
autoLoad: false,
proxy:
{
type: 'ajax',
actionMethods: {
update:'POST'
},
url: '.../CensusXPHP/app/store/getUserIdInfo.php',
reader:
{
type: 'json'
}
}
});
上記のストアがロードされるコントローラ内の機能は次のとおりです。
showMess: function(grid,record)
{
var tempId = record.get('transId'); //grab translation ID
var name = record.get('fname') + ' ' + record.get('lname'); //grab name of current user
var store = this.getPersonSStore();
store.load(
{
params:{cid:tempId}
})
var info = store.data;
console.log(info)
console.log(store.proxy.reader.rawData)
}
};
store.dataオブジェクトとstore.proxy.reader.rawDataの2つをコンソールに出力しています。すぐ下のプリントアウトは、最初の2つのクリックイベントのPOSTおよびコンソールのプリントステートメントを示しています。
> POST http:app/store/getUserIdInfo.php?_dc=1339179358498
> Object { items=[0], map={...}, keys=[0], more...}
>
> POST http:/app/store/getUserIdInfo.php?_dc=1339179359680
> Object { items=[1], map={...}, keys=[1], more...} Object { id="123", bday="1/5/89", payPref="credit", more...}
両方とも同じ名前をクリックしました。ご覧のとおり、store.dataオブジェクトは、最初のクリックではアイテムがゼロであり、rawDataは「未定義です。ただし、最初のクリックでstore.dataオブジェクトの情報を展開すると、実際にjson文字列を含むアイテム(同じ名前を2回クリックしたため、2回目のクリックアイテムと同じ情報です)。以下の印刷出力は次のことを示しています。
> $className "Ext.util.MixedCollection"
>.
>.
>.
> -items: [Object {internalId="123", raw={...}, data={...}, more...}]
> --0: Object {internalId="123", raw={...}, data={...}, more...}
> ---$className: "CX.model.PersonM"
> ---$inheritableStatics: ["setProxy","getProxy", "load"]
> ---alternateClassName: "Ext.data.Record"
> ---associations: Object { items=[0], map={...}, keys=[0], more...}
> ---onfig: Object {}
> ---data: Object { bday="1/5/89", street="123 Main St", city="Los Angeles", more...}
> ---defaultProxyType: "ajax"
> ---dirty: false
> ---editing: false
>.
>.
>.
何が起こっているのかわかりません。私はExtJSを約2週間使用しているので、微妙なエラー(または明白なエラー)を確認するのは困難です。誰かが私を正しい方向に向けてくれませんか?
ご協力いただきありがとうございます!-K