ローカルの JSON ファイルから初期化データをロードする必要がある Web アプリ (実際には、最終的には OS X ダッシュボード ウィジェットになりますが、最初は単純な Web ページとしてプロトタイプを作成することにしました) を作成しています。私のコードは次のようになります。
function loadDatos() {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', 'datos.json', true);
xobj.onReadyStateChange = function () {
if (xobj.readyState == 4) {
var jsonTexto = xobj.responseText;
ProcessTheData(jsonTexto);
}
}
xobj.send(null);
}
この関数は、HTML ファイルの BODY タグの onLoad() イベントから呼び出されます。さて、デバッグ時に見たところ、関数は実行されますが、onReadytStateChange イベント ハンドラーは呼び出されません。
私は何をすべきか?XMLHttpRequest を使用してローカル ファイルにアクセスするのは少し奇妙だと思いましたが、この問題に対処するために私が見た新しいチュートリアルは、それが機能するはずだと言っているようです (私が見たドキュメントの 99% は、どのようにローカル ファイルからではなく、リモート サーバーから JSON をロードします)。
Firefox 3.6.10 を使用してテストしていますが、Safari 4 でも試しました。