Je suis en train de développer une page qui tire des images de Flickr et Panoramio via le support AJAX de jQuery.
Le côté Flickr fonctionne bien, mais lorsque j'essaie de $.get(url, callback)
de Panoramio, je vois une erreur dans la console de Chrome :
XMLHttpRequest ne peut pas être chargé http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=processImages&minx=-30&miny=0&maxx=0&maxy=150 . L'origine null n'est pas autorisée par Access-Control-Allow-Origin.
Si j'interroge directement cette URL à partir d'un navigateur, tout fonctionne bien. Que se passe-t-il, et comment puis-je contourner ce problème ? Est-ce que je compose ma requête de manière incorrecte, ou est-ce que Panoramio fait quelque chose qui entrave ce que j'essaie de faire ?
Google n'a pas trouvé de correspondance utile sur le message d'erreur .
EDITAR
Voici un exemple de code qui montre le problème :
$().ready(function () {
var url = 'http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=processImages&minx=-30&miny=0&maxx=0&maxy=150';
$.get(url, function (jsonp) {
var processImages = function (data) {
alert('ok');
};
eval(jsonp);
});
});
Vous pouvez exécuter l'exemple en ligne .
EDIT 2
Merci à Darin pour son aide. LE CODE CI-DESSUS EST FAUX. Utilisez ceci à la place :
$().ready(function () {
var url = 'http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&minx=-30&miny=0&maxx=0&maxy=150&callback=?';
$.get(url, function (data) {
// can use 'data' in here...
});
});
1 votes
A quoi ressemble l'URL sur laquelle vous faites la demande ? de ? Il ne s'agit pas d'une génération dynamique.
iframe
que vousdocument.write
dans, par exemple ?7 votes
Pouvez-vous afficher la réponse HTTP de la demande à chaque service. Je parie que Panoramio ne répond pas à la requête Access-Control-Allow-Origin. Voir w3.org/TR/cors par exemple.
2 votes
@Kevin, vous n'avez pas besoin de ces en-têtes si le serveur envoie JSONP.
0 votes
@Pekka, j'exécute la page depuis ma machine locale pour le moment (
file:///C:/
). Noniframe
est impliqué.1 votes
@drew que se passe-t-il si vous l'exécutez depuis une URL http ? Cela ne devrait pas faire de différence de cette façon, mais juste pour exclure cette possibilité.
0 votes
@Pekka, je l'ai exécuté depuis jsFiddle et j'ai eu le même problème (lien dans la question mise à jour !)
0 votes
Il y a jsonp.jit.su Il s'agit d'un proxy JSON gratuit qui "permet d'effectuer des requêtes inter-domaines vers n'importe quelle API JSON". Et c'est sur Github github.com/afeld/jsonp