Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用javascript调用flask函数_Javascript_Python_Flask - Fatal编程技术网

用javascript调用flask函数

用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

尝试使用javascript从flask函数中获取一些数据。 目前我有一个html表单和一个oninput,这样我可以在发生更改时实时更新结果

除了返回
{{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'))};
}
这可以使用,这将使您的python
sentVal
函数可用于您的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
,这似乎是合理的,我可以得到一些关于如何执行此操作的指南吗?