当前位置: 首页 > 面试题库 >

使用Ajax时Flask Flash消息不再起作用

公西凯捷
2023-03-14
问题内容

当我使用表单操作提交表单数据时,我能够将消息闪回。

查看表格:

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

注册.HTML

<form action="{{ url_for('processRegister') }}" method=post>
        <dl>
          <dt>email:
          <dd><input type="text" name="email" id="email">
          <div id="emailBlank" class="error"><font color="red">email cannot be blank</font></div>
          <div id="emailFormat" class="error"><font color="red">invalid email format</font></div>
          <dt>Password:
          <dd><input type="password" name="password" id="password">
          <div id="pwBlank" class="error"><font color="red">password cannot be blank</font></div>
          <dt>Enter password again:
          <dd><input type="password" name="password2" id="password2">
          <div id="pw2Blank" class="error"><font color="red">verify password field cannot be blank</font></div>
          <dd><input type="submit" value="submit" id="submit"><br><br>
        </dl>
        </form>
      <a href="{{ url_for('verifyEmailForm') }}">send another verification email</a>
    {% endblock %}

现在,我正在使用ajax,不再显示Flash消息。

$(document).ready(function(){
   (code removed for clarity)

            if (error == false) {
                $.ajax({
                  type: "POST",
                  url: "/processRegister",
                  data: { varEmail: email, varPassword: pw}
                });//ajax call
            }//end if
        });//submit
    });//load validate.js
});//doc rdy

我的观点来处理表格数据:

@app.route('/processRegister', methods=['POST'])
    def processRegister():
        if request.method == 'POST':
            email = request.form['varEmail']
            flash("message -----> " + email)
        return render_template('register.html')

我的布局页面使用以下代码段进行闪烁:

{% with messages = get_flashed_messages() %}
  {% if messages %}
    <ul class=flashes>
    {% for message in messages %}
      <li>{{ message }}</li>
    {% endfor %}
    </ul>
  {% endif %}
{% endwith %}

问题答案:

闪烁的消息存储为会话的一部分,并在服务器端呈现模板时检索。客户端JavaScript无法访问会话cookie。即使是这样,也不容易在JavaScript中解码。即使您可以解码它,也假定该会话是cookie,而不是存储在服务器或其他任何东西上。

如果要渲染一些消息以响应AJAX请求,则应在响应中发送这些消息,并在用JavaScript编写的处理程序中渲染它们。提供闪烁消息是为了方便使用重定向时,但由于使用的是AJAX,因此可以跳过此中间步骤,而直接返回消息。



 类似资料:
  • 问题内容: 我正在运行用于Firefox的Selenium Webdriver(最新版本)。每次开始测试时,我都会从Windows本身收到一条错误消息,指出Firefox崩溃了。当我按下“强制关闭”按钮时,测试将按原样开始。 我是Eclipse和Selenium的新手,但是在调试器模式下,我没有找到有问题的代码(这么多线程同时运行)。.并没有尝试查找Windows日志,但是也许有些人知道解决方案我

  • 问题内容: 最近,我更改了一些要通过ajax显示的页面,但对于为什么utf8编码现在在框内显示一个问号却不知道,我有些困惑。 举个例子。最初的页面是index.php。charset已显式设置为utf8,位于中。然后我用php查询数据库 这是原始的index.php页面: 但是,当我进行更改以添加通过ajax填充“ main_container”的菜单时,所有utf8编码均停止工作。这是新的代码:

  • 你好,我尝试了很多命令来修复它,但是机器人什么也没做。这是我的代码。该文件是bot。派克 为什么不起作用?我尝试了很多命令/模型。我用记事本来编程。给它一个比用Python编程更好的程序?也许对初学者来说是什么?

  • 问题内容: 尝试访问$ container的’.box’类时,在ajax调用内部使用(this)不起作用。 如果不清楚我要做什么,我会尝试更改动态元素的css。但是例如 根本没有调整css。如果我将其移到ajax,success部分之外,它可以工作,但是我无法获得“描述”。 问题答案: 你近了 在您使用它的上下文中,“ this”是指ajax请求,而不是发出事件的事物。要解决此问题,请在发出aja

  • 问题内容: 我正在尝试使用以下API获取实时汇率。 当我单击一个按钮时,它会提示速率并正常工作。我正在使用以下Ajax代码。 Ajax请求转到以下页面。 ,其中包含唯一的按钮,当单击该按钮时,将对此URL发出Ajax请求。 一切都很好。但是,当我将按钮类型从更改为时,问题就出现了,它不起作用。Ajax函数的错误部分中的 警报框只显示了一段时间,然后突然消失了 。我找不到任何可能导致无法完成此请求的

  • 我尝试在我的机器人上实现一个延迟功能,以一个接一个地显示多条消息。延迟特性显示在我的Flow Bot Builder图表中,但当我在conversation tester和Messenger上的代理Bot中测试时,延迟实际上并没有发生--所有消息都同时显示。 我已经将IDE中的延迟代码添加到default.scr文件中: 我还按照下面的指示将options.apikey代码行添加到index.js