2013-03-27 5 views
0

Итак, я написал приложение python, чтобы получить данные о запасах для высоких карт. Я получаю это в терминалеHighcharts not rendering

127.0.0.1 - - [28/Mar/2013 13:47:02] "GET/HTTP/1.1" 200 - 
127.0.0.1 - - [28/Mar/2013 13:47:02] "GET /favicon.ico HTTP/1.1" 404 - 
127.0.0.1 - - [28/Mar/2013 13:47:15] "GET /json/msft/?startdate=2010-01-01?enddate=2011-01-01 HTTP/1.1" 200 - 

Вот мой код Javascript

<script type="text/javascript"> 
function stock() { 
console.log('pass 1') 
url = 'http://127.0.0.1:5000/json/' + document.getElementById("ticker").value + '/?startdate=' + document.getElementById("startdate").value + '?enddate=' + document.getElementById("enddate").value 
$.getJSON(url, function(data) { 
    console.log('pass 2') 
    // split the data set into ohlc and volume 
    var ohlc = [], 
     volume = [], 
     dataLength = data.length; 

    for (i = 0; i < dataLength; i++) { 
     ohlc.push([ 
      data[i]["date"], // the date 
      data[i]["open"], // open 
      data[i]["high"], // high 
      data[i]["low"], // low 
      data[i]["close"] // close 
     ]); 

     volume.push([ 
      data[i]["date"], // the date 
      data[i]["volume"] // the volume 
     ]) 
    } 

    // set the allowed units for data grouping 
    var groupingUnits = [[ 
     'week',       // unit name 
     [1]        // allowed multiples 
    ], [ 
     'month', 
     [1, 2, 3, 4, 6] 
    ]]; 

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

     rangeSelector: { 
      selected: 1 
     }, 

     title: { 
      text: 'AAPL Historical' 
     }, 

     yAxis: [{ 
      title: { 
       text: 'OHLC' 
      }, 
      height: 200, 
      lineWidth: 2 
     }, { 
      title: { 
       text: 'Volume' 
      }, 
      top: 300, 
      height: 100, 
      offset: 0, 
      lineWidth: 2 
     }], 

     series: [{ 
      type: 'candlestick', 
      name: 'AAPL', 
      data: ohlc, 
      dataGrouping: { 
       units: groupingUnits 
      } 
     }, { 
      type: 'column', 
      name: 'Volume', 
      data: volume, 
      yAxis: 1, 
      dataGrouping: { 
       units: groupingUnits 
      } 
     }] 
    }); 
}); 
} 
</script> 

и мой питон код запроса JSon

@app.route('/json/<ticker>/', methods = ['GET']) 
def json_route(ticker): 
startdate = request.args.get('startdate','') 
enddate = request.args.get('enddate','') 
check = datecheck(startdate,enddate) 
if check != 'pass': 
    return check 
check = datacheck(ticker,startdate,enddate) 
if check != 'got data': 
     urldata(ticker) 
print '-----------------data-----------------' 
conn = engine.connect() 
entries = conn.execute(select([Stocks]).where(Stocks.symbol == ticker).where(Stocks.date.between(startdate,enddate))).fetchall() 
stocklist = [] 
print entries 
for x in entries: 
    stocklist.append({ 
     'volume': float('%f' %x[7]), 
     'high': float('%.2f' %x[4]), 
     'open': float('%.2f' %x[3]), 
     'low': float('%.2f' %x[5]), 
     'close': float('%.2f' %x[6]), 
     'date': str(x[2]), 
     'stock': x[1], 
        }) 
conn.close() 
return json.dumps(stocklist) 

Что я делаю неправильно? Я предположил, что getjson будет выполнимым, если его на том же домене localhost. только console.log ('pass one') работает и отображается на консоли при проверке элемента. Пропустить два никогда не ударяют.

ответ

4

Судя по сообщению об ошибке «поддерживается только для HTTP», он хочет URL-адрес HTTP. Вы пробовали:

url = 'http://127.0.0.1:5000/json/... 
+0

, хотя он больше не дает мне ошибки, пытаясь этого, он также не получает json из URL-адреса. Нужно, чтобы он работал на localhost. –

+1

Не уверен, что это поможет, но флажок имеет вспомогательную функцию 'jsonify' для ответов json, которая добавит соответствующий заголовок типа контента: http://flask.pocoo.org/docs/api/#returning-json – Smoe

+0

@Smoe, который работает так же хорошо, но он все равно не попадает в проход два или делает highcharts –