2017-09-10 1 views
2

Ich visualisieren Live-Charts wie das Beispiel hier: Highcharts. Grundsätzlich ist es eine Ajax-Anforderung von Daten aus einem PHP-Skript live-server-data.php, die Zufallsdaten erzeugt:Wie verwende ich Ajax mit Flask

/** 
* Request data from the server, add it to the graph and set a timeout 
* to request again 
*/ 
function requestData() { 
    $.ajax({ 
     url: '/', 
     success: function(point) { 
      var series = chart.series[0], 
       shift = series.data.length > 20; // shift if the series is 
               // longer than 20 

      // add the point 
      chart.series[0].addPoint(point, true, shift); 

      // call it again after one second 
      setTimeout(requestData, 1000);  
     }, 
     cache: false 
    }); 
} 


//---live-server-data.php 
<?php 
$x = time() * 1000; 
$y = rand(0, 100); 
$ret = array($x, $y); 
echo json_encode($ret); 
?> 

Wie eine ähnliche Sache in Fläschchen zu tun, das heißt Anfrage zufällig Zahlen von Flask erzeugt?

from flask import Flask, render_template, request, jsonify 
import random, datetime, json 
import time 

app = Flask(__name__) 

@app.route('/') 
def index(): 

    x = int(round(time.time() * 1000)) 
    y = random.randint(0, 100) 
    return json.dumps([x, y]) 


if __name__ == '__main__': 
    app.run(debug=True) 

Antwort

1

Seine viel einfacher in Flask:

@app.route('/') 
def index(): 
    x = datetime.timestamp(datetime.now()) * 1000 
    y = random.randint(0, 100) 
    return json.dumps([x, y]) 

Aber beachten Sie, dass Sie die folgenden Einfuhren an der Spitze, um für diese arbeiten werden muss hinzufügen:

import random, datetime, json 
from datetime import datetime 
+0

Dank. Wie ruft man die Daten von Ajax Anfrage? Ich habe den Code in Flask eingegeben, bekomme aber die Rohwerte auf index.html. Wie übergebe ich die Daten wie im Beispiel an Highcharts? – DougKruger

+0

Verwenden Sie 'app.py' nicht, ersetzen Sie es durch Ihren tatsächlichen URL-Endpunkt. Zum Beispiel wird es die "http: // localhost /" oder nur "/", wenn es die gleiche Indexseite ist. –

+0

Und versuchen Sie diesen Endpunkt ohne Ajax, indem Sie diese URL zuerst im normalen Browser öffnen. –

Verwandte Themen