[Seasar-user:5777] Re: [Teeda Ajax]Request発行時の処理について
Yutaka Matsubara
[E-MAIL ADDRESS DELETED]
2007年 1月 19日 (金) 12:56:52 JST
松原です。
下記の件ですが対応致しました。
この修正は次バージョンから反映されます。
> ・タイムアウト
> executeTeedaAjax関数のパラメータに
> タイムアウト処理用のcallBack関数
> タイムアウトまでの秒数
> を追加
・タイムアウトの設定方法
executeTeedaAjaxの第2引き数のObjectに以下のふたつのpropertyを設定して下さい。
timeout:秒数
onTimeout:タイムアウト発生時のコールバック関数
コールバック関数は以下の引き数を取ります。
1.XMLHttpRequest
2.AjaxComponent(内部で使用している設定Object)
使用例:
var param = {};
param.timeout = 15;
param.onTimeout = function(req, ajaxComponent){
alert('onTimeout');
alert(req);
};
var process = Kumu.Ajax.executeTeedaAjax(callback, param,
Kumu.Ajax.RESPONSE_TYPE_TEXT);
>
> ・実行中のRequestの中断
> ボタンの2度押しなどにより、直前のRequestのResponseが無くcallBack関数が呼
> び出されていない段階でexecuteTeedaAjaxがコールされた場合
> 直前のRequestを無かったことにして最後のRequestのResponseがcallBack関数に
> 渡される。
> 上記のような処理になるようなパラメータの追加
>
> もしくは、
> 外部からパラメータなどによりXMLHttpRequestのインスタンスを渡すことで、
> 任意のタイミングでabort操作が出来るようになるのでしょうか?
> それが可能であれば、
> XMLHttpRequestのインスタンスを指定するパラメータの追加
・実行中のRequestの中断
今回バージョンよりexecuteTeedaAjaxは実行中のRequestのラッパーを返します。
中断するにはラッパーのcancelメソッドを呼んでください。
使用例:
var process;
var test = function(){
//既にprocessが存在している場合はキャンセル
if(process){
process.cancel();
}
process = Kumu.Ajax.executeTeedaAjax(callback, param,
Kumu.Ajax.RESPONSE_TYPE_TEXT);
}
//好きなタイミングでキャンセル
process.cancel();
・readyStateごとのコールバック関数の設定
今回より通信の各readyStateごとにコールバック関数を設定できるようになります。
設定方法は
1.executeTeedaAjaxの第2引き数に設定する
2.executeTeedaAjaxのコールバックに設定する
の2パターンあります。
両方設定されてる場合は引き数に設定する方が優先されます。
実行毎に内容を切り替える場合には1.のパターンを使用してください。
readyState以外のコールバック関数
・onFailure
HTTPのSTATUSが200〜300以外の値が返って来た場合に呼ばれます。
・onException
処理中になんらかのエラーが発生(jsonのevalなど)した場合に呼ばれます。
コールバック関数は全て以下の引き数を取ります。
1.XMLHttpRequest
2.AjaxComponent(内部で使用している設定Object)
使用例:
1.引き数に渡すパターン
var param = {};
param.onLoading = function(req, ajaxComponent){
alert('onLoading');
}
param.onLoaded = function(req, ajaxComponent){
alert('onLoaded');
}
param.onInteractive = function(req, ajaxComponent){
alert('onInteractive');
}
param.onFailure = function(req, ajaxComponent){
alert('onFailure');
}
param.onException = function(e, ajaxComponent){
alert('onException');
alert(e);
}
process = Kumu.Ajax.executeTeedaAjax(callback, param,
Kumu.Ajax.RESPONSE_TYPE_TEXT);
2.コールバック関数自体に設定するパターン
var callback = function Sample_ajax(msg){
alert('onComplete');
alert(msg);
}
callback.onLoading = function(req, ajaxComponent){
alert('onLoading');
}
callback.onLoaded = function(req, ajaxComponent){
alert('onLoaded');
}
callback.onInteractive = function(req, ajaxComponent){
alert('onInteractive');
}
callback.onFailure = function(req, ajaxComponent){
alert('onFailure');
}
callback.onException = function(e, ajaxComponent){
alert('onException');
alert(e);
}
process = Kumu.Ajax.executeTeedaAjax(callback, param,
Kumu.Ajax.RESPONSE_TYPE_TEXT);
以上宜しくお願い致します。
Seasar-user メーリングリストの案内