ひ孫

犬のこととか書いていきたい

ajax通信でdataType : scriptだのgetScriptだのしたときの失敗時ハンドリングできなかった話

追記:リベンジしました

http://sui.hateblo.jp/entry/2013/03/01/041414


はまったのでメモ。


jqueryで外部スクリプトを読み込みたい時は下記のような感じで書ける

  $.getScript("http://some-exmaple.com/hoge.js");

で、例えば失敗時にあれやりたいなーとか思った時には以下のような感じでかける

  $.getScript("http://some-exmaple.com/hoge.js")
   .done(function(){
   	console.log("成功したよ!やったね!");
   })
   .fail(function(){
   	console.log("失敗したよ");
   });

みたいな感じ。

しかしこれ、成功時は問題ないのだが失敗時はどう頑張ってもfailに落ちてくれない。
$.ajaxに変えてdataType:"script"にしてもダメ。*1

$.getや$.ajaxでdataTypeを別のものにした場合なら問題ない。

一旦今回自分の場合はchrome拡張機能の中で使うものだったので

  $.getScript("http://some-exmaple.com/hoge.js")
   .done(function(){
   	console.log("成功したよ");
   })
  $.get("http://some-exmaple.com/hoge.js")
   .fail(function(){
   	console.log("失敗したよ");
   });

というような感じで$.getを併用して二回読む形で乗り切った。
サーバー上とかで使うときにこうやるわけには行かなかろうけど。

*1:jQuery.ajaxTransportあたりでなんかやってんのかもしれないけど深く見ていない