来自Yahoo Finance API的400 Bad Request

时间:2012-11-20 21:21:27

标签: javascript html json rest yahoo-api

这是我在HTML文件中的javascript函数中的代码

var url = 'http://query.yahooapis.com/v1/public/yql';
        var startDate = '2012-01-01';
        var endDate = '2012-01-08';
        var jsonData = encodeURIComponent('select * from yahoo.finance.historicaldata where symbol in ("YHOO","AAPL","GOOG","MSFT") and startDate = "' + startDate + '" and endDate = "' + endDate + '"');
        $.getJSON(url, 'q=' + data + "&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json", function(){alert("done!");}); 

当我在浏览器中打开文件时,除了上面的内容之外,我的其他功能正常工作:

GET http://query.yahooapis.com/v1/public/yql?q=[object%20Object]&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json 400 **(Bad Request)** jquery-1.8.3.min.js:2
send jquery-1.8.3.min.js:2
v.extend.ajax jquery-1.8.3.min.js:2
v.(anonymous function) jquery-1.8.3.min.js:2
v.extend.getJSON jquery-1.8.3.min.js:2
drawChart

2 个答案:

答案 0 :(得分:1)

应该这样:

$.getJSON(url, 'q=' + data + "&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json", function(){alert("done!");}); 
是吗?

$.getJSON(url, 'q=' + jsonData + "&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json", function(){alert("done!");}); 

答案 1 :(得分:1)

只是抬头 - 我有几个项目(Java和JavaScript)调用此API。它们通常可以正常工作但偶尔会因400 而无法对代码进行任何更改,然后在几小时/几天后再次工作,而无需更改代码。我认为如果服务器出现问题,它可能会返回500而不是500范围内的正确错误(服务器错误 - 这是我,不是你)

400范围内的错误应该是来自服务器的消息,条件是“它是你,而不是我 - 在你再次发送之前修复你的请求”,但我不认为这是这个API的情况。 / p>

简而言之 - 可能是他们不是你!