jQuery "getJSON" из внешнего домена, который не поддерживает вывод JSON-P - PullRequest
0 голосов
/ 04 декабря 2009

Я пытаюсь получить данные из JSON на внешнем сайте, но сайт не поддерживает вывод JSON-P. Это пример нерабочего кода, но он дает хорошее представление о том, чего я пытаюсь достичь:

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

Есть ли способы обойти это, кроме локального размещения данных или их загрузки и обработки с помощью вызова AJAX / PHP? Я бы предпочел, чтобы сервер не обслуживал или не загружал данные, а браузер пользователя брал их напрямую.

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 04 декабря 2009

Самый простой вариант - запустить вызов json через прокси-скрипт PHP, как этот:

<?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); 

?>

и используйте это как источник вашей информации ajaxCall

$.getJSON("proxy.php?url=http%3A%2F%2Fwww.bom.gov.au%2Ffwo%2FIDV60901%2FIDV60901.94868.json", function(data){
1 голос
/ 04 декабря 2009

Одинаковая политика происхождения большинства браузеров не позволит вам сделать это без готового внешнего сервера или серверного прокси. Есть несколько хаков, которые вы можете попробовать с помощью flash:

http://flxhr.flensed.com/

Предполагается, что у вашего пользователя установлена ​​флеш-память, но обычно, если у него установлен javascript, у него также есть флеш-память ...

OR

Если данные, которые вы ищете, пришли куда-то в качестве канала, вы можете передать их через Yahoo Pipes , и они вернут вам jsonp.

Удачи!

...