【问题标题】:Getting Stock Informatin using YQL and JQuery in ASP.NET在 ASP.NET 中使用 YQL 和 JQuery 获取股票信息
【发布时间】:2014-03-13 15:26:44
【问题描述】:

我正在尝试在我的 ASP.NET 项目中使用 YQL 查询来检索股票信息。我正在使用 jquery 进行 json 调用来检索数据。问题是当我单击页面上的“GetData”按钮时,它只是刷新页面并且没有显示任何数据。如果我在 Visual Studio 中以调试模式运行项目,它会返回股票信息并显示在页面上,但是在调试结束时它会清除页面。代码如下:

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script src="Scripts/jquery-1.11.0.min.js" type="text/javascript"></script>

        <script type="text/javascript">
            function getData() {
                var url = "http://query.yahooapis.com/v1/public/yql";
                var data = encodeURIComponent("select * from yahoo.finance.quotes where symbol in ('MSFT')");
                $.getJSON(url, 'q=' + data + "&format=json&diagnostics=true&env=http://datatables.org/alltables.env")
            .done(function (data) {
                $("#result").text("Bid Price: " + data.query.results.quote.LastTradePriceOnly);
                alert(data.query.results.quote.LastTradePriceOnly);
            })
            .fail(function (jqxhr, textStatus, error) {
                var err = textStatus + ", " + error;
                $("#result").text('Request failed: ' + err);
            });
            }

        </script>
    </head>
    <body>

        <form id="form1" runat="server">    
            <div id='result'>No Price</div>
            <button type="submit" onClick="getData();">Get Data</button>         
        </form>
    </body>
    </html>

JsFiddle:http://jsfiddle.net/a3tuP/

有谁知道为什么数据在 JSON 调用中返回却被清除?

谢谢。

【问题讨论】:

    标签: javascript jquery asp.net json yql


    【解决方案1】:

    表单由您在按钮上的提交操作提交 尝试重构像这样的东西并添加 .preventDefault()

    HTML

     <form id="form1" runat="server">    
            <input type="text" id="symbol" />
            <div id='result'>No Price</div>
            <button type="submit">Get Data</button>
        </form>
    

    JS

    function getData(e) {
        //prevent sumbitting the form 
        e.preventDefault()
        var url = "http://query.yahooapis.com/v1/public/yql";
        var symbol = $("#symbol").val();
        var data = encodeURIComponent("select * from yahoo.finance.quotes where symbol in ('BGG')");
    
        $.getJSON(url, 'q=' + data + "&format=json&diagnostics=true&env=http://datatables.org/alltables.env")
            .done(function (data) {
            $("#result").text("Bid Price: " + data.query.results.quote.LastTradePriceOnly);
        })
            .fail(function (jqxhr, textStatus, error) {
            var err = textStatus + ", " + error;
                $("#result").text('Request failed: ' + err);
        });
    }
    
    //bind the submit event
    $(document).on("submit", "#form1" getData)
    

    【讨论】:

    • 如果您关心 IE9 支持您需要添加 &callback=?到您的 url 以强制使用 jsonp 数据类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多