web-dev-qa-db-ja.com

JavascriptでローカルJSONファイルをロードする方法

ローカルの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でも試しました。

20
PaulJ

onreadystatechangeプロパティには大文字がありません。参照:MDC XMLHttpRequest

9
gblazex

拡張子を追加しない限り.jsonおよびMIMETYPEapplication\json、IISはエラーをスローします。

ここを参照してください: http://www.Microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/cd72c0dc-c5b8-42e4-96c2-b3c656f99ead.mspx?mfr=true

1
aharisankar