【问题标题】:Retrieving stock updates using Yahoo Finance使用 Yahoo Finance 检索股票更新
【发布时间】:2013-04-18 14:28:02
【问题描述】:

基本上我正在尝试做的是检索特定公司的股票报价。在我的代码中,我在 textbox(symb) 中给出特定公司的符号(eg:FB),当我点击 button(getupdate) > 它应该列出我在文本框中输入的特定股票的详细信息。

这是我的代码:

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
$(document).ready(function($){
$('getupdate').click(function() {

        var symbol = $('input[id=symb]').val(); \\For Example:FB

        var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20WHERE%20symbol%3D'+symbol+'&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";

        $.getJSON(url, function(data) {
            var items = [];
            $.each(data.query.results.quote, function(key, val) {
                items.push('<li id="' + key + '">' + val + '</li>');

            });
            $('<ul/>', { 'class': 'my-new-list', html: items.join('')}).appendTo('body');
        });
});
});
</script>

</head>
<body>
<div style="padding:16px;">
    Stock Ticker : <input id="symb" type="textbox" value="Ticker"></input>
</div>
<button id="getupdate" name = "getupdate" type="button">Get Updates!</button>
</body>
</html>

我哪里出错了?

提前致谢。

【问题讨论】:

  • 代码$('getupdate') => $('#getupdate') 和 URL 中的引号(+symbol+ 附近)至少有 2 个错误。
  • 您应该检查并处理零记录: if (data.query.count == 0)... 而且您没有正确构建查询字符串。 symbol 的值是否真的被放入了 url 字符串中?
  • @netme 谢谢。我在代码中进行了更改。但仍然无法为我的查询获取股票报价。
  • @SteveWellens 我有这些变化。谢谢。
  • @DeepeshShetty,请看我的回答。我还修复了 Yahoo 查询字符串。

标签: jquery yahoo-finance stockquotes


【解决方案1】:

你的 JS 代码有几个错误:

  1. 按钮选择器不正确:$('getupdate') => $('#getupdate');
  2. url 值内的引号错误;
  3. Yahoo API 的查询字符串错误;
  4. 错误的评论符号\\For Example:FB

你的 JS 应该是这样的:

jQuery(document).ready(function($){
    $('#getupdate').click(function() {
            var symbol = $('input[id=symb]').val(); 
            var url = 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%3D%22' + symbol + '%22&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=';
            $.getJSON(url, function(data) {
                var items = [];
                $('#results').html('');
                $.each(data.query.results.quote, function(key, val) {
                    items.push('<li id="' + key + '">' + val + '</li>');

                });
                $('<ul/>', { 'class': 'my-new-list', html: items.join('')}).appendTo('#results');
            });
    });
});

请在您的 HTML 中的 &lt;button&gt; 标记之后添加此代码。这将帮助您在新查询之前轻松清除结果:

<div id="results"></div>

这里是一个例子:http://jsfiddle.net/6EFqk/1/

我不确定输出格式是否正确,请根据需要重新格式化。

【讨论】:

  • 谢谢。它现在工作正常。但问题是当我更改文本框值并再次单击按钮时,它不会显示我在文本框中输入的新值的引号(例如:我在文本框中给出值 FB 并单击获取更新它会显示我FB 的报价,但是当我将值从 FB 更改为 IBM 然后单击按钮时,它将显示 FB 以前的股票值。现在我每次在文本框中输入新值时都必须刷​​新。有帮助吗?
  • 因为,您正在使用appendTo 函数,它将新内容添加到末尾。我添加了新的div,现在我每次都替换它的内容。我修改了一个例子:jsfiddle.net/6EFqk/1
【解决方案2】:

首先,您没有正确选择按钮。

$('#getupdate').click(function() {

其次,你的斜线是向后的评论,它们总是向前而不是向后。

//For Example:FB

最后,由于这个原因,您没有得到服务返回的任何结果:

当前表“yahoo.finance.quotes”已被阻止。它超出了时间或指令的分配配额

http://jsfiddle.net/RVFW3/

【讨论】:

  • 感谢您的快速回复。我做了必要的改变。但是为什么那张桌子被挡住了?我没有收到“它超出了时间或指令的分配配额”的声明。
  • 我不知道,我从未使用过该服务。
  • @Keven B 现在工作正常。但问题是当我更改文本框值并再次单击按钮时,它不会显示我在文本框中输入的新值的引号(例如:我在文本框中给出值 FB 和单击获取更新它会向我显示 FB 的引号,但是当我将值从 FB 更改为说 IBM 然后单击按钮时显示以前的 FB 股票值。现在我每次在文本框中输入新值时都必须刷​​新。有帮助吗?
  • jQuery(document).ready(function($){ $('#getupdate').click(function() { var symbol = $('input[id=symb]').val(); var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20WHERE%20symbol%3D'"+symbol+"'&amp;format=json&amp;diagnostics=true&amp;env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
  • 对我来说效果很好。以上回答。非常感谢朋友的帮助。
【解决方案3】:

我刚刚在谷歌搜索这个主题时发现了这个流。

也许这个网站会回答你的问题...http://bitbenderz.com/stockticker/

【讨论】:

  • 请注意 link-only answers 是不鼓励的,所以答案应该是寻找解决方案的终点(与另一个中途停留的参考相比,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
【解决方案4】:

这是解决方案的一个版本:jsfiddle

$.getJSON(yqlUrl1, function(data){
    $.each(data.query.results.row, function(index, item){

    var element = $('<div></div>');

    element.append('<span>' + item.symbol + '</span> ');
    element.append('<span>' + item.price + '</span> ');

    if (item.change.indexOf('+') > -1) {
        element.append('<span class="stockUp"> ' + item.change + '</span>');
    } else {
        element.append('<span class="stockDown"> ' + item.change + '</span>');
    }

    element.appendTo('#quotes');   
    });
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 2011-01-17
    • 2021-12-12
    • 1970-01-01
    • 2018-01-02
    • 2021-12-20
    相关资源
    最近更新 更多