gpt4 book ai didi

javascript - Google Finance JSON 回复在 Chrome、Firefox 中不起作用,但在 IE 11 中起作用

转载 作者:行者123 更新时间:2023-12-03 06:20:19 25 4
gpt4 key购买 nike

我正在构建一个 JavaScript 应用程序来从 Google Finance API 检索 STOCK 信息。

finance.google.com/finance/info?q=nasdaq:AAPL

如果我在浏览器中复制粘贴链接,那么我会正确收到 JSON 回复

// [ { "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" } ]

我也尝试了雅虎财经网址。同样的问题。这是我的网址

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22AAPL%22)%0A%09%09&format=json&diagnostics=true&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=

这是我的 JS 代码。

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:即使我只是为了测试代码而添加直接的 http 请求字符串,而不是 var request,responseText 仍然是空的。

xhr.open('GET', "http://ipinfo.io/json ", true);

不知道出了什么问题。同样在 Chrome 中,我将 readyState 设为 1,将 status 设为 0, 在 Internet Explorer 中,我的 readystae 为 4,status 为 200。*

最佳答案

此过程存在多个问题。第一个问题是您尝试使用 XMLHttpRequest 异步请求数据,但没有这样处理它。第二个问题是,当您实际发出请求时,如果您尝试在浏览器内的客户端上运行它,则会遇到同源策略问题。返回的 JSON 还存在另一个问题,因为它无效。它附加了两个正斜杠,这使得返回的 JSON 数据的解析错误。

function getJSONReply(stock) {
var url = "https://finance.google.com/finance/info?q=nasdaq:";
var request = url.concat(stock);
window.alert(request);
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", reqListener);
xhr.open('GET', request, true);
xhr.send();
}

function reqListener() {
console.log(this.responseText);
}

console.log(getJSONReply("AAPL"));

解决方案:由于Google Finance API is no longer available ,您可以尝试another Stackoverflow post中提到的其他API .

工作示例:

function getJSONReply() {
var url = "http://ipinfo.io/json";
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", reqListener);
xhr.open('GET', url, true);
xhr.send();
}

function reqListener() {
console.log(this.responseText);
}

getJSONReply();

关于javascript - Google Finance JSON 回复在 Chrome、Firefox 中不起作用,但在 IE 11 中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38899824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com