Originea null nu este permisă de Access-Control-Allow-Origine

În prezent, lucrez cu API-ul SoundCloud și doresc să am o pistă de încorporare când se face clic pe un buton.

Am două erori:

XMLHttpRequest nu poate încărca http://soundcloud. com/oembed.json? url = http% 3A% 2F% 2Fapi.soundcloud.com% 2Ftracks% 2F48419073 . Originea null nu este permisă de Access-Control-Allow-Origine.

ȘI

Uncaught TypeError: Nu se poate citi proprietatea 'html' de null

Aici este codul meu:

<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>

Folosesc o alertă în codul meu pentru a-mi spune că de fapt ia informații de la SoundCloud API. Nu sunt sigur ce altceva îl împiedică să încorporăm.

Mulțumesc, înainte de timp sau când mă uitați la întrebarea mea.

  • jiggabits
0
Hrm, o execut la nivel local pe Chrome. Permiteți-mi să văd dacă pot găzdui codul undeva temporar. @ Fabrício Matté Vă mulțumim pentru intrare.
adăugat autor veryrarecandy, sursa
OMG @ Fabrício Matté Te iubesc. Lucrări online.
adăugat autor veryrarecandy, sursa
adăugat autor Quentin, sursa
Lasă-mă să ghicesc, încerci să-l accesezi de la localhostul tău?
adăugat autor Fabrício Matté, sursa
@Pointy SoundCloud este un loc în care vă partajați melodii, așa că am ghici că acest API va apuca melodiile de la un utilizator selectat. Oricum, OP, testezi API-ul local? Puterile mele de citire a minții nu sunt la fel de bune ca și ceilalți responsabili SO și problema dvs. de origine este cea mai probabilă în ceea ce privește rularea API-ului local pe Chrome/Opera.
adăugat autor Fabrício Matté, sursa
Nici o problemă, fiecare programator trebuie să se fi întâlnit cu acea problemă la un moment dat. :)
adăugat autor Fabrício Matté, sursa
Este "client_id" ceva pentru care a trebuit să plătiți?
adăugat autor Pointy, sursa

2 răspunsuri

Dacă primiți o piesă înapoi, aș încerca, alertă (document.getElementById ("track")); pentru a vă asigura că primiți elementul dvs. dom.

0
adăugat
Se pare că sunt!
adăugat autor veryrarecandy, sursa
Când adaug codul în alertă, acesta returnează: [object HTMLDivElement]
adăugat autor veryrarecandy, sursa

Citiți ceva despre Politica de origine identică pentru a înțelege mai bine problema principală. Ajax, localhost și Chrome/Opera nu merg bine împreună. Această întrebare conexă este chiar mai bună.

Cea de-a doua problemă se datorează apelului Ajax (undeva în API-ul dvs.) care nu returnează un răspuns html din cauza primei erori.

În loc de a explica problema (care este foarte bine explicată în legăturile de mai sus), voi oferi o soluție. De vreme ce rulezi pe Chrome, există o soluție pentru asta. Porniți cromul cu această opțiune:

- permite-file-acces la fișiere-

(soluție pe care am împrumutat nerușinat de la Pointy )

De asemenea, puteți încerca să o executați pe Firefox sau să o găzduiți temporar. :)


P.S. Dacă aveți de gând să faceți o dezvoltare serioasă de la mașina dvs. locală, vă recomandăm să instalați Apache pentru a servi și a testa conținutul prin http://localhost , ridicând astfel fișierul : /// restricții.

Iată câteva instrumente excelente care vin cu Apache și PHP preconfigurate pentru dezvoltare:

0
adăugat
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com