Shift_JIS HTML 上でも XHR で漢字データを送れる!?

こちらを読んでみて・・

XMLHttpRequestのoverrideMimeTypeでcharsetを指定すれば文字化けはしないはずですよとアドバイスした。

jQuery.ajax で overrideMimeType する方法 - hogehoge

jQuery.ajax(options)を利用した場合overrideMimeTypeを上書きできない」などと書きましたが全くの誤りでした!

XMLHttpRequest.overrideMimeTypeをjQueryで設定する方法 - IkeTの日記

え!

XHR でも Shift_jis で送れるの!?

ってことで、例のごとく手の空いてる外注さんに試してもらった。



結果はNG。

よく見れば上の記事は、Ubiquity (Firefoxプラグイン) 上での話。

IE6,7 では overrideMimeType をサポートしてないとのこと。
詳しくはこちら↓

IE では、ActiveX Microsoft.XMLDOM を利用すると Content-Type: の制限は回避できます。(IXMLDOMDocument)
しかし、GET メソッド専用で POST メソッドが利用できないことや、XMLHttpRequest と構成が違うため、注意が必要です。

ajax - Content-Type: 許容判定 - kawa.net


やはり、Shift_JIS 環境下のIE では XMLDOM で get か iframe Ajax しかなさそうだ。

残念。


XMLDOM

var dom = new ActiveXObject("MSXML2.DOMDocument");
dom.async = false;
dom.load("aaa.xml?p1=あああ"+escape("&")+"p2=いいい");


iframe Ajax

<iframe src="mydomain.html" onload="
var win=this.contentWindow;
if(!win.document)win.document=this.contentDocument;
document.getElementById('target').value=win.document.getElementById('result');
"></iframe>