簡體   English   中英

從javascript中的頁面讀取值

[英]Reading values from page in javascript

我是JavaScript和HTML的新手,所以我可能會有一些愚蠢的問題...

我正在使用Flask在Raspberry pi3上顯示帶有傳感器值的圖形。 傳感器通過串行端口連接。 我想將我從串行端口讀取的值傳遞給index.html,即我擁有該圖的javascript代碼(由Rgraph制作)的模板。

這是帶有flask和端口讀數的main.py。

from flask import Flask,render_template
import serial

app = Flask(__name__)
ser = serial.Serial('/dev/ttyACM0', 9600)

@app.route('/')
def hello_world():
return render_template("index.html")

#here I read one value from the serial port
@app.route('/getdata')
def test():
    return ser.readline()

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

我要使用的index.html模板在這里 (在github上)。 JavaScript會生成一些隨機數(從66行到72行),但是我希望它從頁面“ / getdata”中讀取一個數字,然后將推送到數據數組中。

我曾考慮過使用GET-POST方法,但是它變得相當復雜。 也許有一個更簡單的解決方案? 或者,也許(但我認為這是不可能的),我可以直接從javascript中讀取串行端口嗎? 或者, 也許 ,我做錯了所有事情,需要將所有東西扔出窗外嗎?

flask渲染模板后,您將無能為力。 它實際上並不支持推送請求(至少據我所知),但是執行Ajax請求並不難

ajax_params = {
        url: '/getdata',
        type: 'GET',
        cache: false,
        dataType: 'json',
        error: function(jqXHR, status, error) {
            console.log("Ajax error " + error);
            console.log("status " + status);
            console.log(jqXHR);
        },
        success: datacb
    };

function datacb (resp, status, jqXHR) {
     /* update code here */
     console.log(resp);

     /* you may want to sleep here */

     $.ajax(ajax_params);
}

$.ajax(ajax_params);

除非您要在不重新加載index.html頁的情況下更新數據,否則可以嘗試以下操作:

from flask import Flask,render_template
import serial

app = Flask(__name__)
ser = serial.Serial('/dev/ttyACM0', 9600)

@app.route('/')
def hello_world():
    servalue = test();
    return render_template("index.html", value=servalue)

#here I read one value from the serial port
@app.route('/getdata')
def test():
    return ser.readline()

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

如果要更新數據而不重新加載索引頁,則可能必須使用AJAX,如@debhand所建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM