Ich erstelle eine JavaScript-Anwendung, um STOCK-Informationen von Google Finance API abzurufen.Google Finanzen JSON-Antwort funktioniert nicht in Chrome, Firefox, funktioniert aber in IE 11
finance.google.com/finance/info?q=nasdaq:AAPL
Wenn ich den Link im Browser kopieren und einfügen dann erhalte ich die JSON Antwort richtig
// [ { "id": "22144" ,"t" : "AAPL" ,"e" : "NASDAQ" ,"l" : "108.51" ,"l_fix" : "108.51" ,"l_cur" : "108.51" ,"s": "0" ,"ltt":"10:48AM EDT" ,"lt" : "Aug 11, 10:48AM EDT" ,"lt_dts" : "2016-08-11T10:48:42Z" ,"c" : "+0.51" ,"c_fix" : "0.51" ,"cp" : "0.47" ,"cp_fix" : "0.47" ,"ccol" : "chg" ,"pcls_fix" : "108" } ]
Ich habe versucht, Yahoo Finanzen URL auch. Das gleiche Problem auch dafür. Dies war meine url
Das ist mein JS-Code.
var url = "http://finance.google.com/finance/info?q=nasdaq:";
function getJSONReply()
{
var url_req = url.concat(arguments[0]);
alert(url_req);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4 && xhr.status == 200)
{
alert(xhr.responseText.length);
}
}
xhr.open('GET', url_req, true);
xhr.setRequestHeader('Access-Control-Allow-Headers', '*');
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET');
xhr.addEventListener("load", reqListener);
xhr.send();
}
function reqListener()
{
var sub1 = this.responseText.substring(5,this.responseText.length);
var sub2 = sub1.substring(0, sub1.length - 2);
parse_JSON(sub2);
}
PS: Statt var Anfrage, auch wenn ich ein direktes http-Request-String, nur um zu testen den Code hinzufügen, noch ist response leer.
xhr.open ('GET', "http://ipinfo.io/json", wahr);
Nicht sicher, was schief läuft. Auch in Chrome bekomme ich readyState als 1 und Status als 0, in Internet Explorer bekomme ich ReadyStaes als 4 und Status als 200. *
Möglicherweise Same Origin Policy? Versuchen Sie, die API von einem Server abzufragen, z. 'curl', anstelle von Client-Seite js und sehen, ob die Antwort anders ist. P.S. Ist diese API nicht veraltet? http://googlecode.blogspot.com/2011/05/spring-cleaning-for-some-of-our-apis.html –
Das ist ein fast gültiges JSON, aber es hat '//', was alle JSON auskommentiert . Ich denke, Google hat eine Art Schutz, denn Finance hat keine API (https://developers.google.com/finance/?hl=es). – yuriy636
Außerdem: 'XMLHttpRequest kann https://finance.google.com/finance/info?q=nasdaq:AAPL nicht laden. Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. Origin 'https://fiddle.jshell.net' ist daher nicht erlaubt. 'Ich würde empfehlen, eine andere API http://stackoverflow.com/questions/10040954/alternative-to-google-finance-api – yuriy636