忍者ブログ

2024
11
22

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2024/11/22 (Fri.)

2011
01
19

JSONPでレスポンスが返らない場合の処理

JSONPで、データの要求をした場合、コールバック関数が実行されます。また、リクエストに不備があった場合には、エラーコードが返って来ることが多いでしょう。しかしながら、何のレスポンスもない場合があります。このような場合に、何らかの処理をする必要があるときは、どうしたらよいでしょう。

便法としては、setTimeout関数を利用する方法があります。すなわち、サーバーにリクエストを送ると同時に、何秒かに実行される関数を指定するのです。その関数の中で、レスポンスが返って来ない場合の処理を記述するのです。レスポンスが返って来たか来ないかは、フラグを設定しておいて、コールバック関数の中でフラグを変更すれば、把握することができます。

サンプル

「Callback OK」ボタンを押すと、コールバック関数が実行されます。「No Callback」ボタンを押すと、実在しないURLを呼び出します。したがって、リクエストは返ってきません。


ソースコード

var url_110119
 ="http://blog.cnobi.jp/v1/blog/user/c1c990de467ed4f31a60b43ae3632205/1283165509"

if(!neta.iconSearch)neta.iconSearch={};
neta.iconSearch.callback=function(obj){
  neta.jsonp.requestStatus=true;
  alert('callback OK');
}

neta.iconSearch.noCallback=function(){
 if(!neta.jsonp.requestStatus){
  alert('No Callback');
 }
 clearTimeout(neta.jsonp.tid);
}

neta.jsonp={}; 

neta.jsonp.requestStatus=false;
neta.jsonp.tid=null;

neta.jsonp.request=function(s){
 neta.jsonp.requestStatus=false;

 if(neta.jsonp._jsonp){
  neta.jsonp._jsonp.parentNode
  .removeChild(neta.jsonp._jsonp);
 }

 var L=document.createElement('script');
 L.type='text/javascript';
 L.charset='UTF-8';
 document.getElementsByTagName('head')[0]
 .appendChild(L);
 L.src=s;

 neta.jsonp._jsonp=L;
 neta.jsonp.tid=setTimeout(
  "neta.iconSearch.noCallback()",3000);
}

neta.addListener(function(){

 document.getElementById('btnCallback')
 .onclick=function(e){
  neta.jsonp.request(url_110119);
  if(e.stopPropagation){
		e.stopPropagation();
  }else if(event){
		event.cancelBubble = true;
  }
 };

 document.getElementById('btnNoCallback')
 .onclick=function(e){
  neta.jsonp.request('notExist.jsonp');
  if(e.stopPropagation){
		e.stopPropagation();
  }else if(event){
		event.cancelBubble = true;
  }
 };
});

なお、neta.addListener は、お手製のイベントリスナーです。

PR

2011/01/19 (Wed.) Trackback() Comment(0) JSONP

Comments

名前
メールアドレス
URL
コメント
PASS  Vodafone絵文字 i-mode絵文字 Ezweb絵文字

Trackback

Trackback for this entry:

Links

ご注意

当サイトのスクリプトは、ブラウザが FireFox 3.0 であることを前提に作成されています。IE などでは正常に動作しないものがあります。

カテゴリー

ブログ内検索

最新記事

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

アーカイブ

RSS

最新CM

[04/15 jTemplate]
[05/22 寝太郎]

プロフィール

HN:
寝太郎
性別:
非公開

バーコード

P R

アクセス解析

リンク

NSM

コガネモチ

フリーエリア