ChromeでAJAXの問題が発生し、次のエラーが発生します:
Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101
これは私のコードです:
function IO(filename) {
if (window.XMLHttpRequest) { // Mozilla, Safari,...
xmlhttp = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) { }
}
}
xmlhttp.open("GET", filename+"?random="+Math.floor(Math.random()*100000001), false);
xmlhttp.send();
if(xmlhttp.readyState==4)
return xmlhttp.responseXML;
}
解決策は、async
パラメーターをtrue
に設定することです。
xmlhttp.open("GET", filename+"?random="+Math.floor(Math.random()*100000001), true);
このエラーは、適切なヘッダーのないクロスサイトURLをフェッチするときに発生するだけでなく、XHR(AJAX)を介してローカルファイルをフェッチするときにも発生します。どうやらChromeは、クロスサイトセキュリティ対策に熱心であり、あるファイル:URLを別のファイル:URLと同じサイトと見なす必要があることに気づいていません。これは多くの自家製アプリの問題です。特にJasmine(JavaScriptテストフレームワーク)。
Chromeバージョン16.0.912.63の時点でまだ発生しています。
解決策はわかりません。回避策は、Firefoxまたはその他のブラウザーを使用して、ファイル(URL)から提供されるアプリを実行することです。