2013-04-06 4 views
0

Я разместил этот вопрос AJAX URL update, так как я думал, что проблема с моим кодом была в AJAX, но я думаю, что это может быть проблемой с HighStocks.HighStocks не обновляет URL

У меня есть внешний .js файл с этими функциями:

//uses AJAX call to retrieve data and then creates the chart with the data 
    function createChart(ticker) { 

     $.ajax({ 
      type: 'post', 
      url: 'http://...' + ticker + '....com', 
      success: function (data, status) { 
      //chart is rendered in here 
      } 

    //gets the user inputted ticker symbol from a HTML input box 
    // and passes to chart function 
    function getTicker() { 
     var ticker = document.getElementById('userInput').value; 
     createChart(ticker); 
    } 

Мой HTML-файл только имеет простую форму с полем ввода и кнопку, которая при нажатии вызывает функцию getTicker. По какой-то причине диаграмма не создается, и вызов AJAX не работает.

Возможно, это что-то с HighStocks? Мы ценим любые предложения.

ОБНОВЛЕНИЕ Благодарим вас за предложения, я попытался использовать JSONP, но диаграмма по-прежнему не загружается. Кто-нибудь может понять, что я делаю неправильно?

 var closePrices = new Array(); 
    var dateArray = new Array(); 
    var timeStampArray = new Array(); 
    var timeClose = new Array(); 

function jsonCallback(data, ticker) { 

      console.log(data); 

      //Put all the closing prices into an array and convert to floats 
      for(var i=0; i < data.query.results.quote.length; i++) 
      { 
       closePrices[i] = parseFloat(data.query.results.quote[i].Close); 
      } 

      //displays the values in the closePrices array 
      console.log(closePrices); 

      //Put all the dates into an array 
      for(var i=0; i < data.query.results.quote.length; i++) 
      { 
       dateArray[i] = data.query.results.quote[i].date; 
      } 

      //Convert all the dates into JS Timestamps 
      for(var i=0; i < dateArray.length; i++) 
      { 
       timeStampArray[i] = new Date(dateArray[i]).getTime(); 
      } 


      for(var i=0; i<data.query.results.quote.length; i++) 
      { 
        timeClose.push([timeStampArray[i], closePrices[i]]); 
      } 

      timeClose = timeClose.reverse(); 
      console.log (timeClose); 

      //displays the dateArray 
      console.log(dateArray); 
      console.log(timeStampArray); 

      // Create the chart 
     $('#container').highcharts('StockChart', { 


      rangeSelector : { 
       selected : 1 
      }, 

      title : { 
       text : ticker + ' Stock Price' 
      }, 

      series : [{ 
       name : ticker, 
       data: timeClose, 
       tooltip: { 
        valueDecimals: 2 
       } 
      }] 
     }); 
} 

function createChart() { 

    var url = 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.historicaldata%20where%20symbol%20%3D%20%22' + ticker +'%22%20and%20startDate%20%3D%20%222013-01-01%22%20and%20endDate%20%3D%20%222013-02-25%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=?'; 
    //Ajax call retrieves the data from Yahoo! Finance API 
    $.ajax(url, { 
     dataType: "jsonp", 
     success: function(data, status){ 
      console.log(status); 
      jsonCallback(data, ticker); 
     }, 
     error: function(jqXHR, status, error) { 
      console.log('Error: ' + error); 
     } 
    }); 
} 


//Function to get ticker symbol from input box. 
function getTicker() { 
     var ticker = document.getElementById('userInput').value; 
     createChart(ticker); 
    } 
+1

В каком формате данные, которые вы пытаетесь отступить? Похоже, что это может быть проблемой с политикой одного и того же происхождения: http://en.wikipedia.org/wiki/Same_origin_policy - то, что часто препятствует работе ajax от работы, если вы не используете JSONP или SCRIPT в качестве формата для данные. –

+0

Im получение данных JSON, означает ли это, что я не могу изменить URL-адрес AJAX для получения разных данных компании? Это раздражает. – James

+1

Вам нужно использовать JSONPin в этом случае. –

ответ

0

Благодаря Jeffrey Blake и Pawel Fus для ваших предложений. Используя JSONP, я смог правильно работать с моей программой :)

Смежные вопросы