2009-07-14 4 views
6

Ich versuche, Daten von einer externen .js Datei zu laden, die eine JSON-Darstellung einer Reihe von Daten enthält. Ich kann nicht für das Leben von mir herausfinden, wie man auf die Daten innerhalb der Seite zugreift. Ich bin sicher, das ist wirklich einfach und mir fehlt etwas Einfaches! gerade versuche ich das:Wie lade ich externen JSON von einem Skript auf einer Webseite?

$(document).ready(function(){ 
    $.getJSON("http://api.crunchbase.com/v/1/company/xobni.js", 
     function(data){ 
      alert(data.company_url); 
     }); 
    }); 

... was offensichtlich sehr falsch ist, da nichts passiert. Ich habe versucht, es in einem <script> Tag zu laden, aber Firebug sagt mir, dass es nicht einmal geladen hat. Wie könnte ich das vermasseln? Wie auch immer, ich bin bereit, mir die Haare auszureißen, und ich denke, das wird jemand anderen etwa 15 Sekunden brauchen, um es herauszufinden.

Antwort

13

, dass die Datendatei keinen company_url Eintrag enthält. Zusätzlich wird die Datei .js mit text/javascript Mime-Typ serviert, wenn es mit application/json (oder application/x-javascript serviert werden soll, korrigieren Sie mich).

Der wahre Grund ist natürlich, dass Sie ?callback=? zu Ihrer URL hinzufügen müssen. Dann wird alles funktionieren. Also, es sieht so aus:

$(document).ready(function(){ 
    $.getJSON("http://api.crunchbase.com/v/1/company/xobni.js?callback=?", 
     function(data){ 
      alert(data.homepage_url); 
     }); 
    }); 
+0

ich vertippte die Variable früher, das war nicht der Code, den ich tatsächlich lief :-) Der Rückruf behoben - ich bin nicht wirklich sicher, was das bedeutet oder tut, aber ich kann zugreifen die Daten jetzt! DANKE!! –

+0

Carly, es bedeutet wahrscheinlich, dass Ihre Daten und die JavaScript-Abfrage nicht auf der gleichen Domain sind. Durch das Hinzufügen des Callback-Parameters wird jQuery angewiesen, JSONP anstelle von JSON zu verwenden. JSONP ist im Grunde ein Hack, um domänenübergreifende Probleme zu umgehen. – Prestaul

1

Sieht auf den ersten Blick okay aus. Sind Sie sicher, dass die Antwort JSON ist? Ist der Inhaltstyp vielleicht falsch? Ist die Quell-URL auf die genaue gleiche Domain wie Ihre Seite? (Einschließlich Protokoll und Portnummer)

edit:

Ich lud Ihre JSON, und es gibt keine "company_url" Eigenschaft.

3

Ich schaute auf die JSON-Daten. Es sieht so aus, als gäbe es keine Firma_url. Sie könnten wollen, homepage_url

$(document).ready(function(){ 
    $.getJSON("http://api.crunchbase.com/v/1/company/xobni.js", 
     function(data){ 
      alert(data.homepage_url); 
     }); 
    }); 
+0

'data.company_url' würde undefiniert ergeben, wenn die Callback-Funktion überhaupt ausgeführt würde. – SilentGhost

Verwandte Themen