1

我想发送http请求以获取finance.yahoo股票数据,其网址如下: http: //finance.yahoo.com/d/quotes.csv? s=GAIL.NS+BPCL.NS+%5ENSEI&f=snl1hgp返回一个csv文件。我想读取响应数据并使用 Javascript 或 JQuery mobile 将其填充到列表视图中。我提到的链接都没有帮助我。

我尝试使用以下代码:

$.ajax({
    type: "GET",
    url: "http://finance.yahoo.com/d/quotes.csv",
    data: "s=GAIL.NS+BPCL.NS+%5ENSEI&f=snl1hgp",
    dataType: "text/csv",
    success: function(data) {
        alert(JSON.stringify('data is :' + data));
    }
});

我收到空白数据作为警报。任何示例代码或有用的链接将不胜感激。

4

2 回答 2

2

我认为问题是请求是跨域的。这里还有另一个问题:

跨域获取 CSV 文件

这里还有另一个答案:Yahoo JSONP Ajax Request Wrapped in callback function

和一个工作示例:Displaying ajax results from yahoo Finance using underscore.js

这是一个有效的 jsfiddle,它向 d.yimg.com 发出 jsonp 请求以获取数据 http://jsfiddle.net/gp6zL/

    YAHOO.Finance.SymbolSuggest.ssCallback = function (data) {
        alert(JSON.stringify(data));
    };
    var query;
    query = 'Google';
    if (query.length > 0) {

        $.ajax({
            type: "GET",
            url: "http://d.yimg.com/autoc.finance.yahoo.com/autoc",
            data: {
                query: query
            },
            dataType: "jsonp",
            jsonp: "callback",
            jsonpCallback: "YAHOO.Finance.SymbolSuggest.ssCallback",
        });
    }
于 2013-03-26T12:32:16.247 回答
1

我尝试将 jQuery 排除在外。只要您将“finance.yahoo.com”列入白名单,以下代码就可以工作。

var request = new XMLHttpRequest();
request.open("GET", "http://finance.yahoo.com/d/quotes.csv?s=GAIL.NS+BPCL.NS+%5ENSEI&f=snl1hgp", true);
request.onreadystatechange = function() {//Call a function when the state changes.
    if (request.readyState == 4) {
        if (request.status == 200 || request.status == 0) {
            console.log(request.responseText);
        }
    }
}
request.send();
于 2013-03-26T15:39:39.180 回答