3

info.jsonjQueryAPIを使用してファイルを読み取ろうとしていました。の一部である以下のコードを見つけてくださいtest.html

$.getJSON('info.json', function(data) {
  var items = [];
  $.each(data, function(key, val) {
    items.push('<li id="' + key + '">' + val + '</li>');
  });

ファイルはtest.htmlローカルマシンにあり、ブラウザーでファイルを開こうとすると、Ajax呼び出しがトリガーされず、info.jsonファイルが読み取られません。

Webサーバーがないので動作しませんか?または、コードで何か間違ったことをしていますか?(ただし、Firebugコンソールにエラーは表示されません)。

前もって感謝します。

4

4 に答える 4

2

あなたは常にあなたがAJAX呼び出しをしているところからあなたのサイトをホストしなければならないでしょう。それ以外の場合は、この例外がスローされます。

origin null is not allowed by access-control-allow-origin

ローカルホストサーバーでページをホストすると、すべてがうまく機能すると思います。

于 2013-03-18T06:05:34.180 に答える
1

技術的にはこれにWebサーバーは必要ありませんが、ネットワークアクセスを抽象化するために使用するライブラリの中には、ローカルファイルで機能しないものや、ローカルファイルに多くのことをさせないブラウザもあるため、小さなテストWebサーバーのようなものがあります。静的ファイルの場合は、開発とテストに非常に役立ちます。

于 2013-03-18T05:55:17.253 に答える
0

http://jetty.codehaus.org/jetty/のような小さなウェブサーバー をインストールします。インストールが簡単で、ダウンロードも簡単です;)

于 2013-03-18T06:38:23.317 に答える
0

JSON文字列をテキストファイルに入れてiframeに読み込むことで、データを推定できます。(ほとんどのブラウザは、iframeに.txtファイルをロードできます。)

var frame = document.createElement("IFRAME"); //Create new iframe
var body = document.body;
frame.onload = function() { //Extrapolate JSON once loaded
  data = JSON.parse(frame.contentDocument.documentElement.innerText); //Loads as a global.
  body.removeChild(frame); //Removes the frame once no longer necessary.
}
frame.style.display = "none"; //Because the frame will have to be appended to the body.
body.appendChild(frame);
frame.src = "your JSON.txt"; //Select source after the onload function is set.
于 2017-06-27T03:09:30.880 に答える