Предварительный тег обновления приложения фляги с содержимым файла журнала динамического сервера - PullRequest
0 голосов
/ 06 октября 2019

Использование файла журнала, который создается при длительных вычислениях, и обновляет его до предварительного тега.

Сценарий с функцией JS (не встроенной), которую можно включать или выключать, а не всегда.

Я попытался адаптировать решение из принятого ответа здесь Показатьсодержимое файла журнала, когда он обновляется в функции, и он не работает должным образом, потому что не выполняет рендеринг.

Файл журнала соответствующим образом изменяется другим программным обеспечением.

Фляги Python

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html',
                            str_log = url_for('static',log.txt"))

@app.route('/', methods=['POST'])
def all_forms_post():
    if request.method == 'POST':
        if request.form['id_form'] == 'I.2':
            #do code that changes log.txt
            index
            return redirect(request.url)
    return redirect(request.url)

HTML


    
    

 
    Hello click button to start simulation and update this

JS

// global JavaScript Variables here
var timerId;

/*Fetches*/
function refreshPre(url, blRefresh = true) {
    if (blRefresh) {
        // declare and assign setInterval
        timerId = window.setInterval(populatePre(url),1000);
    } else {
        // stop setInterval
        window.clearInterval(timerId);
        timerId = null;
    }
}

function populatePre(url) {
    var output = document.getElementById('contents');
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url);
    xhr.send();
}

Идеи очень приветствуются.

1 Ответ

0 голосов
/ 06 октября 2019

Вам нужно переписать функцию обратного вызова setInterval и добавить обратный вызов xhr.onload следующим образом:

//global JavaScript Variables here
var timerId;

/*Fetches*/
function refreshPre(url, blRefresh = true) {
    if (blRefresh) {
        //declare and assign setInterval
        timerId = window.setInterval(function(){ populatePre(url) },1000);
    } else {
        //stop setInterval
        window.clearInterval(timerId);
        timerId = null; 
    }
}

function populatePre(url) {
    var output = document.getElementById('contents');
    var xhr = new XMLHttpRequest();
    // Listen to xhr events for response:
    xhr.onload = function(){
        output.innerText = xhr.response;
    }    
    xhr.open('GET', url);
    xhr.send();
}

Ссылка XMLHttpRequest

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...