ローカルの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を使用してテストしていますが、Safari4でも試しました。
onreadystatechange
プロパティには大文字がありません。参照:MDC XMLHttpRequest
拡張子を追加しない限り.json
およびMIMETYPEapplication\json
、IISはエラーをスローします。