2013-06-21 5 views
9

Próbowałem uzyskać notowania giełdowe od aplikacji Yahoo APi. Moje dane wejściowe do zapytania to tylko giełda papierów wartościowych (z pola tekstowego). Na przycisku kliknij tło Metoda JavaScript "getprice()" jest wywoływana. Mam java kod skryptu, który wygląda takOtrzymuj notowania giełdowe od yahoo finance w formacie json za pomocą 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 „magazynie” jest pole tekstowe, gdzie chcę, aby wyświetlić LastTradePriceOnly dla danego giełdowy.

Nie widzę żadnych danych wyjściowych. Debugowanie również nie powoduje żadnych błędów. Czy mogę uzyskać jakieś sugestie z tym problemem?

+0

Chyba, że ​​host JavaScript w domenie yahooapis.com nie będzie w stanie uzyskać JSON z powodu ograniczeń pochodzenia. –

+0

Możesz także spróbować użyć biblioteki udostępniającej interfejs giełdowy API, więc nie musisz jej implementować samodzielnie. Spójrz na [stocks.js] (https://github.com/wagenaartje/stocks.js) –

Odpowiedz

13

Spróbuj tego.

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 Dodałem również przykład pracy dla Ciebie.

+0

Dzięki za przykład - bardzo ładne. –

+0

@vladbezden Jak zaimplementowałbyś to dla zapytania, które używa więcej niż jednego symbolu? – rambossa

+1

@ MichaelRamos, możesz użyć tego samego kodu, aby uzyskać więcej niż jeden symbol. Po prostu wyślij listę znaków oddzielonych przecinkami ("MSFT, IBM"), aby zapytać, a teraz twój obiekt data.query.results.quote będzie zawierał dwie informacje o obiekcie dla MSFT i drugą dla IBM. Możesz dowiedzieć się, o co chodzi w bezpieczeństwie obiektu przez text.query.results.quote [0] .symbol zwróci "MSFT" i data.query.results.quote [1] .symbol zwróci "IBM" –

3

Jak to się robi w angularjs w przypadku trzeba go:

W widoku:

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

W kontrolerze: nazwa symbol giełdowy jest przekazywana poprzez $ scope.ticker_name do metody usługi "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; 
    }); 
}]); 

w usłudze:

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); 
    } 
}]); 
Powiązane problemy