PDA

View Full Version : Ext.data.Storeのloadメソッド  正しいパラメータの渡し方について



Mari
10 Aug 2009, 3:37 AM
お世話になります。

Ext.data.Storeのloadメソッドの、正しいパラメータの渡し方について質問させてください。
現在、以下のような方法で、Ext.data.Store にパラメータを渡していますが、
この場合ごく稀に、パラメータが正しくサーバに渡らない場合があります。




var store = new Ext.data.Store(
proxy : new Ext.data.HttpProxy({
url : "http://~";
}),
listeners : {
// beforload にて、this.baseparams. 経由でパラメータに値を格納
// (実際は可変の値を格納している)
beforeload : function(){
this.baseparams.param1 = "aaa";
this.baseparams.param2 = "bbb";

}
load : function(){

}
}
)

// 読み込み開始
store.load();


質問①
パラメータの内、固定の値については、Ext.data.store のコンストラクタにて、
指定をすべきでしょうが、可変の値については、以下のように、load の引数で
param を渡すのが、推奨された方法でしょうか?


store.load(
params : {
aaa : "aaa",
bbb : "bbb"

}
);


質問②
beforload にて、this.baseparams に値を入れた場合に、ここで指定した
パラメータが、クライアントに送信されない現象(不具合or 仕様)はありますでしょうか?

こちらの環境は、以下になります。
Extバージョン:2.1.0
ブラウザ:IE6 SP2

よろしくお願いいたします。

yuki
10 Aug 2009, 8:16 PM
質問①
パラメータの内、固定の値については、Ext.data.store のコンストラクタにて、
指定をすべきでしょうが、可変の値については、以下のように、load の引数で
param を渡すのが、推奨された方法でしょうか?


store.load(
params : {
aaa : "aaa",
bbb : "bbb"

}
);


特に何が推奨というわけではありませんが、サーバーに渡す値が固定なのであれば、Storeのコンストラクタに渡すbaseParamsで指定して置いた方が効率的(処理的にもコード的にも)だと思います。



質問②
beforload にて、this.baseparams に値を入れた場合に、ここで指定した
パラメータが、クライアントに送信されない現象(不具合or 仕様)はありますでしょうか?


特にそういった仕様・不具合は把握しておりませんが、再現するコードがあればお願いします。
(ちなみに、上記「クライアントに送信」→「サーバーに送信」ですよね?あと、「baseparams」ではなく「baseParams」ですよね?細かいことですが・・・:))

Mari
16 Sep 2009, 3:21 AM
お世話になっております。

本件につきまして、こちらで引き続き調査をおこなっております。
原因についてはまだ断定は出来ていないのですが、WebServer側のKeepAliveの設定時間が、60秒未満に設定されている場合に発生する可能性があると推測しております。
こちらの環境は、KeepAlive=15秒の設定になっております。

以下、関連がありそうなマイクロソフトのサポートオンラインになります。
 http://support.microsoft.com/kb/833301/ja
 http://support.microsoft.com/kb/831167/ja

しかし、こちらの環境は、ブラウザ:IE6 SP2を使用しており、通常上記現象は発生しないように思います。
こちらでも、通常のSubmitによるPOSTでは、正常に動作しており、現象が発生しているのは、Extによる非同期通信時のみです。

そこで、以下2点ご質問させてください。
①こちらで発生しているような事象は、現在までに報告されておりますでしょうか?
②回避方法に関して、サーバー側のKeepAlive値を変更する以外に、何か良い案がございましたらご教授頂けますと幸いです。

よろしくお願いいたします。