如何在FLASK中使用ajax发布数据后呈现模板?

时间:2017-10-15 06:07:04

标签: javascript jquery python ajax flask

我遇到问题,在用ajax发布数据后我无法打开render_template。这是我的ajax代码。

@app.route('/evaluasiModel', methods=['POST',"GET"])              
def evaluasiModel():
    metodeSkoring = request.form['metodeSkoring']
    metodeSkoring = int(metodeSkoring)
    return render_template("evaluasiModelKlasifikasi.html", hasilSkoring = metodeSkoring)

这是我的服务器代码。

$('#restaurant_form').submit(function () {

      $('.menu-row').each(function(){
          var menu_entry = ""

          $(this).find('.form-control').each(function(){
              menu_entry = menu_entry + this.value + ","
          })

          $('#restaurant_form').append('<input type="hidden" name="menu_entries" value="'+ menu_entry +'" />')
          alert(menu_entry)

      })
  })

我希望在将数据ajax发布到“def evaluasiModel()”之后,我可以打开render_template“evaluasiModelKlasifikasi.html”并获取数据metodeSkoring以显示在此模板中。

2 个答案:

答案 0 :(得分:3)

为什么需要该帖子功能?您可以使用重定向从用户获取值后加载页面。

以下是如何操作的示例。我模拟了一个类似的场景。为此,我需要

  1. RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|ico|tiff|css|js)$ [NC] :作为路线控制器
  2. application.py:作为主要模板
  3. index.html:作为重定向模板
  4. evaluasiModelKlasifikasi.html

    application.py

    import json from flask import Flask, render_template app = Flask(__name__) @app.route('/') @app.route('/index') def show_index(): return render_template("index.html") @app.route('/evaluasiModel/<metodeSkoring>') def evaluasiModel(metodeSkoring): return render_template("evaluasiModelKlasifikasi.html", hasilSkoring = metodeSkoring) if __name__ == '__main__': app.run(debug=True)

    index.html

    <!DOCTYPE html> <html> <head> <title>Index</title> <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> </head> <body> <div id="container"> <input type="text" id="mentodeNegasi" /> <button id="get_button">Get score</button> </div> <script type="text/javascript"> $(document).ready(function(){ $("#get_button").on("click",function(){ var skoring = $("#mentodeNegasi").val(); window.location.href = '/evaluasiModel/'+skoring; }) }) </script> </body> </html>

    evaluasiModelKlasifikasi.html

    <强>输出:

    索引页:

    index page

    重定向后

    enter image description here

    演示:

    enter image description here

答案 1 :(得分:2)

您必须在ajax调用的success函数中添加响应中的html代码。您没有指定要添加该代码的位置,因此您可以在此处将示例添加到页面的body ...

if ($(this).attr("value") == "button-three") {

    var skoring = getRadioVal(document.getElementById('mentodeNegasi'),'negasi')

    $.ajax({
        type: 'POST',
        url: '/evaluasiModel'
        data: { metodeSkoring: skoring },
        dataType: 'html'
        success: function(response) {
            $('body').append(response);
        }
    })
}