繁体   English   中英

发送文件路径从 flask 到 Ajax

[英]Send file path from flask to Ajax

我正在尝试将文件路径发送到我的 Ajax 脚本,该脚本读取文件内容并将其显示在页面上

@app.route('/main', methods=['GET'])
def main():
    filename = '/static/js/'+current_user.username+'log.txt'
    return render_template('main.html',name=current_user.username,data=filename)

js脚本

var checkInterval = 1; //seconds
var fileServer = '{{ data }}';
var lastData;

function checkFile() {
    $.get(fileServer, function (data) {

        if (lastData !== data) {
            $( "#target" ).val( data );
            $( "#target" ).animate({
                scrollTop: $( "#target" )[0].scrollHeight - $( "#target" ).height()
            }, 'slow');
            lastData = data;
        }
    });
}

$(document).ready(function () {
    setInterval(checkFile, 1000 * checkInterval);
});

我尝试了不同的方法来做到这一点,将 fileServer 更改为 'data.filename'/{{ data| json }} 等但没有运气。 我怎样才能做到这一点?

如果您传递使用url_for作为参数生成的整个 url 应该可以工作。

@app.route('/main', methods=['GET'])
def main():
    filename = url_for('static', filename=f'js/{current_user.username}log.txt')
    return render_template('main.html', name=current_user.username, data=filename)

作为补充,我还指定请求不应存储在缓存中。

const checkInterval = 1;
const fileServer = "{{ data }}";
let lastData;

function checkFile() {
  $.get({ url: fileServer, cache: false }, function(data) {
    if (lastData !== data) {
      $("#target").val(data);
      $("#target").animate({
        scrollTop: $("#target")[0].scrollHeight - $("#target").height()
      }, "slow");
      lastData = data;
    }
  });
}

$(document).ready(function() {
  setInterval(checkFile, 1000 * checkInterval);
});

我使用 jquery 版本 3 进行测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM