jQuery.ajax で overrideMimeType する方法

英語翻訳 - エキサイト翻訳のサービスを利用して英日翻訳するUbiquityコマンド。
このサービス、どうも翻訳後の文字コードShift_JISで文字化けしてしまうという事が書かれていたので、ブクマコメントにてjQueryは知らんけど、XMLHttpRequestのoverrideMimeTypeでcharsetを指定すれば文字化けはしないはずですよとアドバイスした。
それを受けてid:IkeTさんが、jQueryではできそうもないからXMLHttpRequestを直に叩いたよ、と追記してくれました。

上記、記事を受けて、jQueryでスクレイピングする時の文字化け対処法 - 不動産屋のラノベ読みid:Lhankor_Mhyさんが、jQueryでも出来るよ!的な記事を書いている。
ただ、この記事での書き方では

ただ、このoverrideMimeTypeはコマンドラインを閉じでも保持され続けるようで*2、なんか、他のコマンドに悪影響が出そうでなんというか気持ち悪いですね。

jQueryでスクレイピングする時の文字化け対処法 - 不動産屋のラノベ読み

だそうだ。

そいで、ちょっと興味を持ってjQueryのコードを見てみた。

前置きが長くなったけど、結論として出来る。jQeury.ajaxメソッドの定義は以下の様になっている。

jQeury.ajax = function(s){
  //...
  var xml = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest;
  // ...
  if (s.beforeSend){
    s.beforeSend(xml);
  }
  // ...
  xml.send(s.data);
}

よってメソッドに渡すオブジェクトのメンバにbeforeSendを入れてあげれば良い。

jQuery.ajax({
  // ...
  beforeSend: function(xhr){
     xhr.overrideMimeType("text/html;charset=Shift_JIS");
  },
  // ...
});