Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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让HTML表单提交(和Python函数返回)不做任何事情_Javascript_Python_Html_Forms_Flask - Fatal编程技术网

Javascript 如何使用Flask让HTML表单提交(和Python函数返回)不做任何事情

Javascript 如何使用Flask让HTML表单提交(和Python函数返回)不做任何事情,javascript,python,html,forms,flask,Javascript,Python,Html,Forms,Flask,我在一个HTML页面上使用web应用程序表单中的Flask,但在提交之前将其分散在几个“页面”上 第一个按钮“添加动物”将在我的python脚本中运行run_ME函数,然后继续到下一页,供用户键入动物名称。我的问题是,对于Flask,我必须在python函数中返回一些东西(我不能返回None或完全忽略返回),但我不希望单击“添加动物”以任何方式导致表单响应,只需在python中运行函数并以HTML显示下一页 从中,我在onClick事件中将returnfalse添加到我的HTML脚本中。然而,这

我在一个HTML页面上使用web应用程序表单中的Flask,但在提交之前将其分散在几个“页面”上

第一个按钮“添加动物”将在我的python脚本中运行
run_ME
函数,然后继续到下一页,供用户键入动物名称。我的问题是,对于Flask,我必须在python函数中返回一些东西(我不能返回None或完全忽略返回),但我不希望单击“添加动物”以任何方式导致表单响应,只需在python中运行函数并以HTML显示下一页

从中,我在onClick事件中将
returnfalse
添加到我的HTML脚本中。然而,这并没有帮助,在我的python脚本中
返回'False'
(因为我必须返回一些东西)覆盖并给我一个带有'False'的空白页面

HTML文件中的相关代码:

<div class="section-25">
  <div class="container-5 w-container">
    <div class="text-block-6">Select the level of algorithm you&#x27;re looking to make</div>
    <div class="w-form">
      <form id="wf-form-Email-Form" name="wf-form-Email-Form" data-name="Email Form" method="post" action="">

        <!-- PAGE 1 -->
        <div id="page1" class="page" style="visibility:visible;">

          <!-- ALGORITHM NAME -->

          <label for="Algorithm-Name-3" class="custom-question algorithm-name">What will you name your algorithm?<br></label><input type="text" class="text-field enter-name w-input" maxlength="256" name="Algorithm-Name" data-name="Algorithm Name"
            placeholder="Be as creative as you like!" id="Algorithm-Name">

          <!-- ALGORITHM DESCRIPTION -->

          <label for="Algorithm-Desc-3" class="custom-question algorithm-desc">Briefly describe what your algorithm does?<br></label><input type="text" class="text-field enter-name w-input" maxlength="256" name="Algorithm-Description"
            data-name="Algorithm Description" placeholder="You can still be creative!" id="Algorithm-Desc">
          <p><input type="submit" class="submit-button-2 w-button" id="C1" value="Add Animal" onClick="showLayer('page2'), runFunction(); return false;"></p>
        </div>

        <script>
          mybutton = document.getElementById("C1");

          function runFunction() {
            form.action = "/meta2sql";
            form.submit();
          }
        </script>

        <!-- PAGE 2 (1st ANIMAL) -->

        <div id="page2" class="page">

          <p style="font-family: Poppins,sans-serif; color: #fff;">1st Animal</p>

          <!-- 1ST ANIMAL NAME -->

          <label for="Enter-species" class="custom-question enter-species" id="one_name">What animal are you looking for?</label>
          <input type="text" class="text-field w-input" maxlength="256" name="species1" placeholder="Enter name of animal" id="Enter-species" required="">

          <br><br>

          <p><input type="button" class="submit-button-2 w-button" id="B1" value="Go Back" onClick="showLayer('page1')">
      </form>
    </div>
  </div>
</div>

<!-- JAVASCRIPT -->
<script language="JavaScript">
  var currentLayer = 'page1';

  function showLayer(lyr) {
    hideLayer(currentLayer);
    document.getElementById(lyr)
      .style.visibility = 'visible';
    currentLayer = lyr;
  }

  function hideLayer(lyr) {
    document.getElementById(lyr).
    style.visibility = 'hidden';
  }

  function showValues(form) {
    var values = '';
    var len = form.length - 1;
    //Leave off Submit Button
    for (i = 0; i < len; i++) {
      if (form[i].id.indexOf("C") != -1 ||
        form[i].id.indexOf("B") != -1)
        //Skip Continue and Back Buttons
        continue;
      values += form[i].id;
      values += ': ';
      values += form[i].value;
      values += '\n';
    }
    alert(values);
  }
</script>

任何建议都值得赞赏

您不应该返回
字符串
“False”,而是返回布尔值。事实上,如果你想“正确地”做这件事,你会回来的

您可以通过
返回响应(status=204)

当然,您必须首先从flask导入该类。

它将始终以HTTP响应(状态代码+有效负载)进行响应,理想情况下,您将呈现您所称的“下一页”并返回,或者更好地,为“下一页”创建HTTP重定向谢谢您的建议,我已经尝试返回布尔值,但收到
TypeError:view函数没有返回有效响应。返回类型必须是字符串、dict、tuple、响应实例或WSGI可调用,但它是bool。
但是我尝试了
返回响应(status=204)
。我稍微调整了一下,对我有效的是
return',204
。谢谢你的帮助!
from flask import Flask, request, render_template, url_for, redirect    

app = Flask(__name__)

@app.route('/run_ME', methods=['GET', 'POST'])
def run_ME():
  # some functions
    return 'False'

@app.route("/")
def index():
    return render_template('index.html')

if __name__ == "__main__":
    app.debug = True
    app.run()