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 オブジェクトを取得して、そこから 1 つ以上の値を抽出できるようにするためだけに、非常に基本的なコード (以下) を書きました。

$.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

URL を次のように変更します。

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

書式設定のために明確にしようとしました。実際のURLは

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 に答える