7
votes

Comment charger JSON externe à partir d'un script sur une page Web?

J'essaie de charger des données à partir d'un fichier externe .js code>, contenant une représentation JSON d'un tas de données. Je ne peux pas pour la vie de moi comprendre comment accéder aux données à l'intérieur de la page. Je suis sûr que c'est vraiment facile et je manque quelque chose de simple! En ce moment, j'essaye ceci:

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


0 commentaires

3 Réponses :


1
votes

semble bien à première vue. Êtes-vous sûr que la réponse est valide JSON? Le type de contenu est-il incorrect, peut-être? L'URL source est-elle sur le même domaine exacte que votre page? (y compris le protocole et le numéro de port)

EDIT:

J'ai chargé votre JSON et il n'y a pas de propriété "Company_url".


0 commentaires

14
votes

Ce fichier de données n'a pas société_url . De plus, le fichier .js est servi avec text / javascript MIME-Type, lorsqu'il doit être servi avec application / json (ou (ou Application / x-JavaScript , corrigez-moi de cela).

La vraie raison , bien sûr, est que vous devez ajouter ? rappel =? à votre URL. Alors tout va fonctionner. Donc, ça va ressembler à ceci: xxx


2 commentaires

J'ai mal saisi la variable plus tôt, ce n'était pas le code que j'étais en cours d'exécution :-) Le rappel résolu - je ne suis pas vraiment sûr de ce que cela signifie ou fait, mais je peux accéder aux données maintenant! JE VOUS REMERCIE!!


Carly, cela signifie probablement que vos données et le JavaScript récupère ne sont pas sur le même domaine. L'ajout du paramètre de rappel raconte JQuery d'utiliser JSONP plutôt que JSON. JSONP est essentiellement un hack pour travailler autour des problèmes croisés.



3
votes

J'ai regardé les données JSON. On dirait qu'il n'y a pas d'entreprise_url. Vous voudrez peut-être que homepage_url xxx


1 commentaires

DATA.COMAY_URL produirait indéfini si la fonction de rappel exécuterait du tout.