5

私は現在、SoundCloud API を使用しており、ボタンがクリックされたときにトラックを埋め込みたいと考えています。

2 つのエラーが表示されます。

XMLHttpRequest はhttp://soundcloud.com/oembed.json?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F48419073を読み込めません。Origin null は、Access-Control-Allow-Origin では許可されていません。

キャッチされていない TypeError: null のプロパティ 'html' を読み取れません

これが私のコードです:

<button onclick="getPopular()">+1</button>
<div id="track"></div>

<script src="http://connect.soundcloud.com/sdk.js" type="text/JavaScript"></script>
<script type="text/JavaScript">
    SC.initialize({
        client_id: "**************",
    });

    var getPopular = function() {
        SC.get("/tracks", {limit: 1}, function(tracks) {
            var track = tracks[0];
            alert("Latest track: " + track.title);
            SC.oEmbed(track.uri, document.getElementById("track"));
            });
        };
</script>

コードでアラートを使用して、実際に SoundCloud API から情報を取得していることを知らせます。他に何が埋め込みを妨げているのかわかりません。

事前に感謝するか、私の質問を見てください。

  • ジガビット
4

2 に答える 2

17

主な問題をよりよく理解するために、Same Origin Policyについて少し読んでください。Ajax、localhost、および Chrome/Opera はうまく連携できません。この関連する質問はさらに優れています。

2 番目の問題はhtml、最初のエラーのために応答を返さない Ajax 呼び出し (API のどこか) が原因です。

問題を説明する代わりに (上記のリンクで非常によく説明されています)、解決策を提供します。Chrome で実行しているため、回避策があります。このオプションでクロムを開始します。

--allow-file-access-from-files

(恥知らずにPointyから借りた回避策)

Firefox で実行するか、一時的にホストすることもできます。:)


PS ローカル マシンから本格的な開発を行う予定がある場合は、Apache をインストールして を介してコンテンツを提供およびテストし、制限http://localhostを解除することを検討してください。file:///

以下に、開発用に事前構成された Apache および PHP に付属する優れたツールをいくつか示します。

于 2012-06-02T21:24:05.740 に答える
0

トラックを取得している場合は、alert(document.getElementById("track")); を試してみます。dom 要素を取得していることを確認します。

于 2012-06-02T21:04:43.357 に答える