[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 メーリングリストの案内