jQuery “getJSON” da un dominio esterno che non supporta uscita JSON-P
-
12-09-2019 - |
Domanda
Sto cercando di afferrare i dati da un JSON su un sito esterno, ma il sito non supporta l'uscita JSON-P. Questo è un esempio di codice non-lavoro, ma dà una buona idea di quello che sto cercando di realizzare:
$.getJSON("http://www.bom.gov.au/fwo/IDV60901/IDV60901.94868.json", function(data){
//Process data here
});
Ci sono modi per aggirare questo oltre ad ospitare localmente i dati o il download e l'elaborazione con una chiamata / PHP AJAX? Preferirei non avere il server servire o scaricare i dati e piuttosto avere il browser dell'utente afferrare direttamente.
Grazie in anticipo!
Soluzione
Il Same Origin Policy della maggior parte dei browser non avrebbe permesso di fare questo senza un esterno disposto server o un proxy server-side. Ci sono alcuni hack si potrebbe provare con flash:
Questo presuppone l'utente ha installato il flash, ma in generale, se hanno installato javascript, hanno anche il flash ...
o
Se i dati che si sta cercando è venuto come un feed da qualche parte, si potrebbe passare attraverso Yahoo Pipes e torneranno jsonp per voi.
Buona fortuna!
Altri suggerimenti
opzione più semplice sarebbe quella di eseguire la chiamata JSON tramite uno script PHP proxy, come questo:
<?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);
?>
e utilizzarlo come fonte di voi ajaxCall
$.getJSON("proxy.php?url=http%3A%2F%2Fwww.bom.gov.au%2Ffwo%2FIDV60901%2FIDV60901.94868.json", function(data){