2016-05-29 9 views
1

Ich versuche, einige JSON-Daten abzurufen. Ich kann auf die Daten in einem normalen Webbrowser wie folgt zugreifen: http://www.ebrent.net/apis/tsp.php?fund=G+Fund&start=2003-01-01&end=2004-01-01, aber ich kann es nicht in jQuery arbeiten. Was mache ich falsch?Ich kann die getJSON-Methode nicht aufrufen, um Daten abzurufen

Bitte nehmen Sie sich einen Blick auf meine jsFiddle: https://jsfiddle.net/MrSnrub/mq31hwuj/

var tsp_api = '//www.ebrent.net/apis/tsp.php?start=2003-01-01&end=2004-01-01'; 

$.getJSON(tsp_api, function(json) { 

    // This alert never gets called. 
    alert("Success!"); 

    // Set the variables from the results array 
    var data = json; 
    // console.log('Data : ', data); 

    // Set the div's text 
    $('#div-data').text(data); 

}); 
+0

Ist www.ebrent.net CORS aktiviert? –

Antwort

1

Sie nicht das Ergebnis bekommen kann, weil der Remote-Standort nicht aktiviert CORS hat: Wenn Sie an der Konsole anschauen, werden Sie sehen:

Cross-Origin-Anforderung blockiert: die Same Origin Policy nicht zulässt die Remote-Ressource bei http://www.ebrent.net/apis/tsp.php?start=2003-01-01&end=2004-01-01 zu lesen. (Grund: CORS-Header 'Access-Control-Allow-Origin' fehlt).


Sie können CORS umgehen, indem sie etwas mit wie anyorigin.com, d.h .:

$.getJSON('http://anyorigin.com/get/?url=http%3A//www.ebrent.net/apis/tsp.php%3Fstart%3D2003-01-01%26end%3D2004-01-01&callback=?', function(data){ 
    $('#div-data').html(data.contents); 
}); 
+0

Wo sehen Sie den Fehler in der Konsole? Ich öffne Firebug und gehe zur Konsole, aber alles, was ich sehe, ist ein rotes X; Ich sehe nichts, was Cross-Origin-Anfrage blockiert anzeigt. – MrSnrub

+0

Ihr Beispiel auf jsfiddle zeigt 2 Fehler, der erste ist Mischen von Inhalten (Anfrage http mit https), 2. die eine, die ich oben gepostet habe. –

+0

Ich dachte mit '// www.ebrent.net' anstelle von' http: // www.ebrent.net' oder 'https: // www.ebrent.net' sollte sich um den Mixing Content Fehler kümmern. – MrSnrub

0

Dies funktioniert, wenn Sie die Ihre Server laufen ohne https zu verwenden. Hinweis fetchApi anstelle von jQuery-Bibliothek als nicht ohne weiteres verfügbar im Browser

var tsp_api = 'https://www.ebrent.net/apis/tsp.php?start=2003-01-01&end=2004-01-01'; 


function fetchData(url) { 
     return fetch(url, { 
      method: 'get' 
     }).then(function(response) { 
      return response.json(); 
     }).catch(function(err) { 
      console.log(error); 
     }); 
    } 
fetchData(tsp_api).then((data)=> console.log(data)).catch((err)=> console.log(err)); 

verwendet Das wird nicht funktionieren auf jsfiddle HTTPS verwenden, wird der Browser ablehnen, alle Ressourcen über HTTP zu laden. Wie Sie bereits versucht haben, beheben Sie dieses Problem normalerweise, indem Sie die API-URL so ändern, dass HTTPS anstelle von HTTP verwendet wird. Ihr ebrent.net hat jedoch keine CoRS für HTTPS-Verbindungen zugelassen. Aus diesem Grund sind Sie nicht in der Lage, Ihr Ergebnis für jsfiddle

Verwandte Themen