2010-07-08 3 views
1

J'essaie de charger du contenu externe en utilisant la fonction de chargement jQuery sur div sur ma page. La méthode de chargement fonctionne bien, avec du contenu local, mais si vous voulez quelque chose hors de votre domaine, cela ne fonctionnera pas. (Il fonctionne réellement dans IE avec un avertissement de sécurité, mais refuse de travailler dans Chrome du tout). La documentation de jQuery indique que c'est correct, car le contenu inter-domaines est restreint pour des raisons de sécurité. Même avertissement que je reçois si j'utilise la méthode .getJSON.Utilisation du contenu interdomaine à partir du script client (problèmes de sécurité)

OK, après un googler un peu j'ai trouvé très approche intéressante de l'utilisation YQL pour le contenu de chargement, je l'ai essayé quelques exemples, comme celui-ci:

 var request = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Ffinance.yahoo.com%2Fq%3Fs%3Dyhoo%22&format=json&diagnostics=true&callback=?"; 
     $.getJSON(request, function (json) { 
      alert(json); 
     } 
     ); 

Et ça marche vraiment! Ce que je ne comprends pas maintenant est que http://query.yahooapis.com est également la ressource inter-domaine mais le navigateur (IE et Chrome) fonctionne bien avec cela?

Quelle est la différence? Qu'est-ce que je rate?

Merci

Répondre

0

Merci pour vos réponses, mais malheureusement, tous deux d'entre eux ne répondre à ma question originale ..

J'ai vérifié questions posées sur stackoverflow (je sais que je dois le faire en premier) et trouvé la raison d'un tel comportement.

Le groupe de démarrage de code utilise AJAX/JSON pour récupérer les données et il est autorisé en raison de la stratégie de même origine. Mais la requête à YQL utilise plutôt JSONP, c'est OK. Le JSONP était quelque chose que je ne connaissais pas, c'est pourquoi je ne me suis pas décontenancé le comportement.

Introduction Information sur JSONP n'a pu être trouvée ici: http://ajaxian.com/archives/jsonp-json-with-padding

0

vous pouvez faire sur le site externe JSON comme ceci:

callback({key:value,etc:1}) 

et définissent

function callback(json) { 
    ..here is processing.. 
} 
+0

pas tout à fait répondu à ma question .. –

Questions connexes