2013-06-21 25 views
9

Tôi đã cố gắng lấy báo giá cổ phiếu từ yahoo api. Đầu vào của tôi cho truy vấn chỉ là một mã cổ phiếu (từ một trường văn bản). Trên nút bấm vào phương thức JavaScript nền "getprice()" được gọi. Tôi có một mã script java trông giống nhưNhận báo giá chứng khoán từ tài chính yahoo ở định dạng json bằng cách sử dụng javascript

function getprice() 
{ 
    var symbol = $('#stockquote').val(); 


    var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22"+symbol+"%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json"; 

    $.getJSON(url, function (json) 
    { 

     var lastquote = json.query.results.quote.LastTradePriceOnly; 
     $('#stock').text(lastquote); 

    }); 
} 

$('#stock').text(lastquote); 

Here "chứng khoán" đây là lĩnh vực văn bản mà tôi muốn hiển thị LastTradePriceOnly cho ticker nhất định.

Tôi không thấy bất kỳ đầu ra nào tăng lên. Gỡ lỗi cũng không hiển thị bất kỳ lỗi nào. Tôi có thể nhận được bất kỳ đề xuất nào về vấn đề này không?

+0

Trừ khi bạn lưu trữ của bạn JavaScript trên miền yahooapis.com bạn sẽ không thể để có được JSON do hạn chế nguồn gốc. –

+0

Bạn cũng có thể thử sử dụng thư viện cung cấp API thị trường chứng khoán, do đó bạn không phải tự mình triển khai. Hãy xem [stocks.js] (https://github.com/wagenaartje/stocks.js) –

Trả lời

13

Hãy thử điều này.

function getData() { 
    var url = 'http://query.yahooapis.com/v1/public/yql'; 
    var symbol = $("#symbol").val(); 
    var data = encodeURIComponent("select * from yahoo.finance.quotes where symbol in ('" + symbol + "')"); 

    $.getJSON(url, 'q=' + data + "&format=json&diagnostics=true&env=http://datatables.org/alltables.env") 
     .done(function (data) { 
      $('#result').text("Price: " + data.query.results.quote.LastTradePriceOnly); 
     }) 
     .fail(function (jqxhr, textStatus, error) { 
      var err = textStatus + ", " + error; 
      console.log('Request failed: ' + err); 
     }); 
} 

Here Tôi cũng đã thêm ví dụ làm việc cho bạn.

+0

Cảm ơn ví dụ - rất hay. –

+0

@vladbezden Bạn sẽ thực hiện điều này cho truy vấn sử dụng nhiều hơn một biểu tượng như thế nào? – rambossa

+1

@MichaelRamos, bạn có thể sử dụng cùng một mã để có được nhiều hơn một biểu tượng. Chỉ cần gửi danh sách các ký hiệu được phân cách bằng dấu phẩy ('MSFT, IBM') để truy vấn và bây giờ đối tượng data.query.results.quote của bạn sẽ có hai đối tượng thông tin trong đó cho MSFT và một đối tượng thứ hai cho IBM. Bạn có thể tìm thấy bảo mật mà đối tượng là về bởi data.query.results.quote [0] .symbol sẽ trả về 'MSFT' và data.query.results.quote [1] .symbol sẽ trả về 'IBM' –

3

Đây là cách nó được thực hiện trong AngularJS trong trường hợp bạn cần nó:

Theo quan điểm của bạn:

<section ng-controller='StockQuote'> 
    <span>Last Quote: {{lang}}, {{lastTradeDate}}, {{lastTradeTime}}, {{lastTradePriceOnly}}</span> 
</section><br> 

Trong điều khiển của bạn: Tên mã cổ phiếu được chuyển qua $ scope.ticker_name phương pháp dịch vụ 'getData.getStockQuote'.

appModule.controller('StockQuote', ['$scope', 'getData', 
function($scope, getData) { 
    var api = getData.getStockQuote($scope.ticker_name); 
    var data = api.get({symbol:$scope.ticker_name}, function() { 
     var quote = data.query.results.quote; 
     $scope.lang = data.query.lang; 
     $scope.lastTradeDate = quote.LastTradeDate; 
     $scope.lastTradeTime = quote.LastTradeTime; 
     $scope.lastTradePriceOnly = quote.LastTradePriceOnly; 
    }); 
}]); 

Trong dịch vụ của bạn:

appModule.service('getData', ['$http', '$resource', function($http, $resource) { 
    // This service method is not used in this example. 
    this.getJSON = function(filename) { 
     return $http.get(filename); 
    }; 
    // The complete url is from https://developer.yahoo.com/yql/. 
    this.getStockQuote = function(ticker) { 
     var url = 'http://query.yahooapis.com/v1/public/yql'; 
     var data = encodeURIComponent(
      "select * from yahoo.finance.quotes where symbol in ('" + ticker + "')"); 
     url += '?q=' + data + '&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys'; 
     return $resource(url); 
    } 
}]); 
Các vấn đề liên quan