Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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 Python使用按钮调用函数_Javascript_Python_Ajax_Json_Flask - Fatal编程技术网

Javascript Python使用按钮调用函数

Javascript Python使用按钮调用函数,javascript,python,ajax,json,flask,Javascript,Python,Ajax,Json,Flask,按下flask模板中的按钮后,我希望它调用app.py中定义的python函数,通过键入下面我定义函数的地方,我可以在模板中调用该函数: app.py中的函数示例: @app.route('/foo') def foo(x,y): pass app.jinja_env.globals.update(foo=foo) 模板: <button type="button" onclick="myFunction(this)" name="enable" id="{{counter}}

按下flask模板中的按钮后,我希望它调用app.py中定义的python函数,通过键入下面我定义函数的地方,我可以在模板中调用该函数:

app.py中的函数示例:

@app.route('/foo')
def foo(x,y):
    pass
app.jinja_env.globals.update(foo=foo)
模板:

<button  type="button" onclick="myFunction(this)" name="enable" id="{{counter}}"> Enable </button>
启用
在我的按钮中,我使用onclick属性只是为了测试是否使用javascript按下了许多按钮中的正确按钮,如下所示:

{% block scripts %}
    {{ super() }}
    <script>
    function myFunction(elem){
        if(confirm('Are you sure you want to ' + elem.name) == true){
            alert("its done.");            
         }
         else { 
            return false;
         }          
    }
    </script>
{% endblock %}
{%block scripts%}
{{super()}}
函数myFunction(elem){
if(confirm('您确定要'+elem.name)==true){
警惕(“它完成了”);
}
否则{
返回false;
}          
}
{%endblock%}
我面临的问题是,我需要在模板中提供与正确按钮对应的功能。例如,如果按钮显示Enable,那么我需要调用已经定义的Enable函数;否则,如果按钮对应false,我希望使用disable函数


我觉得我朝着正确的方向前进,但却无法通过这一部分。请尽量详细

如果希望在不向服务器生成请求的情况下执行函数,则必须使用JavaScript定义函数。否则,您需要触发HTTP请求

现在在您的例子中,如果您所要做的只是启用/禁用按钮,那么在javascript中执行所有这些操作(无需转到服务器)是有意义的

例如:

<button type="button" onclick="disableButton(this)" name="enable">Enable</button>
模板

<form action="/foo" method="post">
    <button type="submit" value="Send Email" />
</form>

单击“发送电子邮件”按钮时,HTTP POST请求将发送到应用程序上的“/foo”。您的函数
foo
现在可以从请求中提取一些数据,并在服务器端执行它想执行的任何操作,然后将响应返回到客户端web浏览器


当涉及到使用Flask构建的web应用程序时,建议您仔细阅读以更好地了解客户机/服务器交互。

感谢您的回复。所以根据你告诉我的,我只需要针对我的具体情况使用JavaScript。我面临的最大问题是试图在JS中调用实际的python函数。你能给我指出正确的方向或举个例子吗?你不能直接从JavaScript调用python函数,因为在这种情况下,你的JavaScript运行在客户端的浏览器上,而你的python函数存在于服务器上。实现这种通信的唯一方法是向服务器发送HTTP请求。这就是我的答案所暗示的。如果您试图做的是纯视觉的,比如禁用或隐藏按钮,那么这完全可以在JavaScript中实现。这就是你想要的吗?看看我用javascript操作按钮的编辑,如果这就是你想要做的,我明白了。我并不是试图仅仅在服务器页面上更改文本,而不在后端实际发生任何事情。我所拥有的功能完全实现了我需要在服务器端禁用的功能。所以我确实需要一个HTTP请求来完成这项工作。我明天再查。谢谢你的指导。
@app.route('/foo', methods=['GET', 'POST'])
def foo(x=None, y=None):
    # do something to send email
    pass
<form action="/foo" method="post">
    <button type="submit" value="Send Email" />
</form>