用javascript调用flask函数
尝试使用javascript从flask函数中获取一些数据。 目前我有一个html表单和一个oninput,这样我可以在发生更改时实时更新结果 除了返回用javascript调用flask函数,javascript,python,flask,Javascript,Python,Flask,尝试使用javascript从flask函数中获取一些数据。 目前我有一个html表单和一个oninput,这样我可以在发生更改时实时更新结果 除了返回{{sentVal(request.args.get('rev')、request.args.get('lang'))}}之外,所有内容都在代码中工作。代码在外部工作,但在内部不工作。为什么会发生这种情况?我如何修复它 <script> function refreshFunction() { document.getElem
{{sentVal(request.args.get('rev')、request.args.get('lang'))}}
之外,所有内容都在代码中工作。代码在外部工作,但在内部不工作。为什么会发生这种情况?我如何修复它
<script>
function refreshFunction() {
document.getElementById("tonality").innerHTML = "Tonality: " + {{ sentVal(request.args.get('rev'), request.args.get('lang')) }};
}
</script>
函数刷新函数(){
document.getElementById(“tonality”).innerHTML=“tonality:”+{{sentVal(request.args.get('rev')、request.args.get('lang'))};
}
这可以使用,这将使您的pythonsentVal
函数可用于您的Jinja代码
@app.context_processor
def utility_processor():
def sentVal(rev, lang):
...
根据注释,如果您想要重新运行sentVal
函数,则需要将其转换为ajax函数(有许多易于找到的示例)。但总而言之:
在html中:
function refreshFunction() {
var sentVal = // ajax call to your new route
document.getElementById("tonality").innerHTML = "Tonality: " + sentval;
}
和烧瓶:
@app.route('/sentVal'):
return sentVal(request.args.get('rev'), request.args.get('lang'))
这是一个相当基本的提纲,但希望你能理解 这看起来不像是“用javascript调用flask函数”。实际上,您正在从一个模板调用python函数,该模板应该生成javascript。不管怎样,您所说的“代码在外部工作,但在内部不工作”是什么意思?谢谢!我目前正在使用这个函数,但我认为该函数没有被调用。当用字符串替换它时,它工作,但函数不工作。我有一个submit按钮,当使用它调用sentVal时,它会工作。为了澄清,当javascript
refreshFunction
运行时,您是否希望重新运行sentVal
?如果是这样,你不能这样做。页面加载时将处理Jinja,而不会重新运行。您需要将此转换为ajax调用来重新运行sentVal
,这似乎是合理的,我可以得到一些关于如何执行此操作的指南吗?