2

jsonファイルからデータを取得して解析するスクリプトを作成しました。それはウェブサーバー上で動作しました。

しかし、サーバーではなくローカル ファイル ( file:///C:/xampp/htdocs/script/index.html) で動作させるための解決策を見つける必要があります。FFでのみ機能します:

$.getJSON('data2.json', function(data) {   
    $.each(data.selection_form.entities, function(i,name){
        ...do something
     });
});

何か案は?ローカル Web サーバーは解決策ではありません。

4

2 に答える 2

0

ここに別の選択肢があります。

1 回限りの解決策として、JSONP を自分で構築できます。

function mycallback(data){
    $.each(data.selection_form.entities, function(i,name){
        ...do something
    }
}

$('body').append('<script src="data2.json" type="text/javascript"></script">');

これは基本的に jQuery が行う方法ですが、それほど洗練されていません。

于 2012-10-15T21:33:22.400 に答える
0

関数に "jsonp" の dataType を指定することで、JSONP経由で jQuery にファイルをロードさせることができ$.ajax()ます。これにより、ブラウザ<script>は XmlHttpRequest に依存するのではなく、ファイルをロードするためのタグを作成します。ただし、コールバック関数でデータをラップする必要があります。

注:を使用$.getJSON(..)して JSONP 経由でデータをロードすることはできますが、コールバック関数を明示的に指定することはできません (jQuery はコールバック関数名の変更を使用するため、静的ファイルをロードするために必要です)。

あなたのコード:

$.ajax({ 
    url: 'data2.json', 
    dataType: 'jsonp', 
    jsonpCallback: 'mycallback', 
    jsonp: false,
    success: function(data){
        $.each(data.selection_form.entities, function(i, name) {
            ... do something
        }
    }
});

jsonpCallback: 'mycallback'ここで、元の data2.json ファイルのデータを という関数の呼び出しでラップすることに注意してmycallbackください。

mycallback({ /* your data */ });
于 2012-10-15T21:13:17.977 に答える