むしろ一昨日参ります。
JSONPだとエラーがキャッチできない - blog::konk303
例のあれ(仮題)・今更ながらjQueryでJSONPを使ってみた。の続きであります。
例えばアクセスしたURLが404だったり403だったり501だったりすると、普通のajax関数では引数としてのハッシュのキー名errorで指定した関数なりが実行されますが、jsonp的にアクセスするとそれが実行される事はありません。これは直接やり取りしているのではなくて「scriptタグ経由で無理矢理に」という方式のため判断がつかないためみたいです。と上記リンク先のページ様にも書いてあります。
なんでもonerrorイベントなら拾えるとか拾えないとかいう話もあったのですけど、ブラウザにより挙動が違ったりするらしいし、色々面倒そうなのであっさりsetTimeout()をつかって適当に収拾する事にしました。
直前にsetTimeout()でエラー処理を実行しておきgetJSON()、正常なレスポンスが返ってきたらいの一番にclearTimeout()を実行してエラー処理をキャンセル。
var timer = setTimeout(function() {
alert('えらー');
何やら後処理;
}, 60000);
$.getJSON("http://hogehoge/fugafuga.php&jsoncallback=?",
function(data) {
clearTimeout(timer);
いろいろ本処理;
});
いろいろあろうかと思うが、とりあえずこんなもので。
たぐ - javascript
(0)