Yahoo JSONP Ajax Request包含在回调函数中

big*_*esu 3 ajax jquery jsonp yahoo-api

我知道我可以使用jquery,.ajax和jsonp进行跨域调用ajax.我打电话给雅虎股票报价api.一切正常,结果又回来了(我可以看到使用Fiddler.)问题是我得到一个js错误YAHOO未定义.我认为它有问题,因为JSON是在回调函数中形成的,因此它的json语法不正确.我该怎么办才能修复它?谢谢!这是代码:

     $.ajax({
            type: 'GET',
            dataType: 'jsonp',
            jsonp: 'callback',
            jsonpCallback: 'YAHOO.Finance.SymbolSuggest.ssCallback',
            data:{
                query: request.term
            },
            url: 'http://autoc.finance.yahoo.com/autoc',
            success: function (data) {
                alert("yes");
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status);
                alert(thrownError);
            }
        });
Run Code Online (Sandbox Code Playgroud)

daG*_*GUY 6

我想添加这个答案,因为它看起来像user209245上面的答案(从2011年开始)不再有效.我是这样做的:

  1. 使用YQL控制台为您想要获得的股票构建查询,例如Apple:

    select*from yahoo.finance.quotes where symbol ="AAPL"

  2. 确保选中JSON并指定JSONP回调,例如 quote
  3. 单击测试
  4. 插入它为您生成的REST查询,如下所示:

    var quote;
    
    $(document).ready(function() {
        $.ajax({
            url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%3D%22AAPL%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=quote",
            dataType: "jsonp",
            jsonp: "callback",
            jsonpCallback: "quote"
        });
    
        quote = function(data) {
            $(".price").text("$" + data.query.results.quote.AskRealtime);
        };
    });
    
    Run Code Online (Sandbox Code Playgroud)

    然后在您的页面上.price <div>显示:

    $543.21
    
    Run Code Online (Sandbox Code Playgroud)

当然,一旦你获得数据,你可以显示你想要的任何东西; 我只是以价格为例,因为这就是我所需要的.