2009-12-04 8 views
0

J'essaie d'extraire des données d'un site JSON sur un site externe, mais le site ne prend pas en charge la sortie JSON-P. Ceci est un exemple de code non-travail, mais donne une bonne idée de ce que je suis en train de réaliser:jQuery "getJSON" d'un domaine externe qui ne prend pas en charge la sortie JSON-P

$.getJSON("http://www.bom.gov.au/fwo/IDV60901/IDV60901.94868.json", function(data){ 
    //Process data here 
}); 

Y at-il des façons de contourner cette autre que l'hébergement localement les données ou le téléchargement et le traitement avec un AJAX/Appel PHP? Je préférerais ne pas que le serveur serve ou télécharge les données et que le navigateur de l'utilisateur l'attrape directement.

Merci d'avance!

Répondre

1

Le Same Origin Policy de la plupart des navigateurs ne vous permet pas de le faire sans un serveur externe ou un proxy côté serveur. Il y a quelques hacks que vous pourriez essayer avec flash:

http://flxhr.flensed.com/

Cela suppose que votre utilisateur a installé flash, mais en général, si elles ont le javascript installé, ils ont aussi le flash ...

OU Si les données que vous recherchez proviennent d'un flux quelque part, vous pouvez les transmettre à Yahoo Pipes et elles vous renverront jsonp.

Bonne chance!

+0

Merci pour l'astuce flash, j'ai récemment plongé dans AS3 donc je vais certainement regarder vers le bas de cette route. –

5

option la plus simple serait de lancer l'appel JSON via un script proxy PHP, comme celui-ci:

<?php 
// PHP Proxy 
// Loads a file from any location. 
// Author:Paulo Fierro 
// January 29, 2006 
// usage: proxy.php?url=http://mysite.com/myxml.xml 

$session = curl_init($_GET['url']);      
curl_setopt($session, CURLOPT_HEADER, false);   
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
$xml = curl_exec($session);        
echo $xml;   
curl_close($session); 

>

et l'utiliser comme source de vous ajaxCall

$.getJSON("proxy.php?url=http%3A%2F%2Fwww.bom.gov.au%2Ffwo%2FIDV60901%2FIDV60901.94868.json", function(data){