Question

J'essaye d'exécuter ce qui suit:

$.getJSON('http://services.digg.com/2.0/story.getTopNews?limit=25&callback=?', function(data) {
    console.log(data);
});

Mais je comprends:

Story.getTopNews: -1Resource interprété comme script mais transféré avec MIME Type Application / JSON. Story.gettopNews: 2Uncaught Syntaxerror: Token inattendu:

J'ai aussi essayé quelque chose comme ceci:

var url = "http://services.digg.com/2.0/story.getTopNews?limit=25";

$.ajax({
    url: url,
    crossDomain:true,
    dataType: "json",
    success:function(data,text,xhqr) {
        console.log(data);
    }
});

J'ai compris:

XmlHttpRequest ne peut pas se charger http://services.digg.com/2.0/story.gettopnews?limit=25. Origine http://sumews.com n'est pas autorisé par l'origine access-control-allow-origin. services.digg.com/2.0/story.gettopnews?limit=25get http://services.digg.com/2.0/story.gettopnews?limit=25 indéfini indéfini)

Toute aide serait grandement appréciée.

Était-ce utile?

La solution

Les demandes de l'Ajax inter-domaines sont interdites par le politique d'origine homosexuelle. Cela signifie que vous ne pouvez pas faire de demandes de domaine transversal de la manière normale et est la cause des erreurs dans votre deuxième exemple.

Dans le premier exemple, vous essayez la solution de contournement - JSONP. Cela fonctionne en mettant un script élément dans la page qui fait référence au script externe. Le script externe doit répondre en enveloppe les données dans un appel de fonction. Si le script externe ne prend pas en charge le fait de le faire (et il semble que Digg ne le fasse pas) que vous ne pouvez pas utiliser la solution de contournement JSONP.

Étant donné que le serveur envoie des données JSON (car elle ne prend pas en charge JSONP), votre navigateur est confus lorsqu'il essaie de l'analyser en JavaScript ordinaire. Ceci est la cause de vos premières erreurs.


Il semble que Digg Est-ce que Soutenez JSONP, mais il a besoin d'un argument supplémentaire type=javascript:

$.getJSON('http://services.digg.com/2.0/story.getTopNews?limit=25&type=javascript&callback=?', function(data) {
    console.log(data);
});

Cela fonctionne pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top