1

pure.js で json データを表示しようとしています。json がページにハードコードされている場合は機能しますが、URL から実際のライブ json を取得しようとすると機能しません。私のURLを介してライブjsonに接続するのを手伝ってください。

私のURL

私のフィドル

<script src="http://beebole.com/pure_git/libs/pure.js"></script>

<p>Item: <span id="item" class="item"></span></p>
<p>Count: <span id="count" class="count"></span></p>
<p>Group: <span id="group" class="group"></span></p>

// Hard coded - works
var data = {"item":"chm","count":1,"group":"truthsponsors"}

$.getJSON('http://arbitrarycounter.com/vb/truthsponsors/chm/', function(data) {
    // My attempt to retrieve the live json - doesn't work
});

$('#item').autoRender(data);
$('#count').autoRender(data);
$('#group').autoRender(data);

*サーバー上でクロスオリジン共有が有効になっています。

4

2 に答える 2

1

Felix と Quentin のコメントは正確です。同一オリジン ポリシーの問題が発生しています。

取得する URL の末尾に追加?callback=?します。は?、内部 jQuery コールバック関数の名前に置き換えられます。バックエンド スクリプトでコールバック パラメータの値を使用して、戻りデータで関数呼び出しを行います。その後、成功ハンドラー関数でそのデータにアクセスできます。

例:

$.getJSON('http://arbitrarycounter.com/vb/truthsponsors/chm/?callback=?', function(data) {
    // My attempt to retrieve the live json - doesn't work
    console.log(data);
});

コールバックが設定されている場合はjson1341254215、次を返す必要があります。

json1341254215({"item":"chm","count":1,"group":"truthsponsors"});

また、バックエンド スクリプトの先頭に content-type を設定することを忘れないでください。

header('Content-type: application/'.(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ? 'json' : 'javascript'));
于 2013-07-22T17:33:23.663 に答える
1

CORS を有効にすると、パイのように簡単にデータを取得できます。参照: http://enable-cors.org/

<script src="http://beebole.com/pure_git/libs/pure.js"></script>

<p>Item: <span id="item" class="item"></span></p>
<p>Count: <span id="count" class="count"></span></p>
<p>Group: <span id="group" class="group"></span></p>

$.getJSON('http://arbitrarycounter.com/vb/truthsponsors/chm/', function(data) {
    $('#item').autoRender(data);
    $('#count').autoRender(data);
    $('#group').autoRender(data);
});

更新されたフィドル

于 2013-07-22T20:16:58.647 に答える