1

假设我有一个从不同域返回的 JSON 对象,如下所示(这最初包含相当大的数据量,因此我省略了不相关的部分,同时保持其结构完整):

{
    "query": {
        "count": 1,
        "created": "2013-10-08T21:06:49Z",
        "lang": "en-US",
        "results": {
            "quote": {
                "symbol": "GOOG",
                "Ask": "854.63",
                "AverageDailyVolume": "1837530",
                "PreviousClose": "865.74"
            }
        }
     }
 }

尽管我对使用 JSON 感到相当自在,但我才刚刚开始学习用于与 JSON 交互的 jQuery .ajax 函数的具体细节。我编写了一些非常基本的代码(如下),只是为了确保我可以检索 JSON 对象并从中提取一个或多个值:

$.ajax({
    type: "get",
    cache: false,
    dataType: "jsonp",
    url: "http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol in ('" + source + "') &format=json&diagnostics=true&env=http://Fdatatables.org/alltables.env&callback=?",
    success: function(data) {
        console.log(data.query.results.quote.symbol); // expected output is "GOOG"
    }
});

当我在 Firefox 中运行上述代码时,我TypeError: data.query is undefined在浏览器控制台中收到错误消息。我注意到已经发布了几个与我在这里提出的问题类似的问题,但还没有找到任何足以解决这个问题的东西——至少从我的理解来看是这样。

任何建议/提示将不胜感激。

4

3 回答 3

0

你可能想试试这个:

success: function(data) {
        console.log($.parseJSON(data).query.results.quote.symbol); 
}

希望有帮助。

于 2013-10-09T02:17:36.813 回答
0

我认为你的问题与环境有关。Fdatatables.org不是一个有效的环境。

改变

env=http://Fdatatables.org/alltables.env&callback=?

env=http://datatables.org/alltables.env&callback=?

小提琴

于 2013-10-09T02:11:02.263 回答
0

将您的网址更改为:

http://query.yahooapis.com/v1/public/yql?
    q=select * from yahoo.finance.quotes where symbol in
    ('GOOG')
    &format=json
    &diagnostics=true
    &env=http://datatables.org/alltables.env

为了格式化,我试图说清楚。实际网址是

http://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20yahoo.finance.quotes%20where%20symbol%20in%20('GOOG')%20&format=json&diagnostics=true&env= http://datatables.org/alltables.env

于 2013-10-09T02:38:11.267 回答