将变量从Flask传递回Ajax
Passing variables from Flask back to Ajax
当我访问我的页面根时,我的flask会生成一个包含元素的基本jinja模板:
<div><span id="var_1">{{ var1|safe }}</span></div>
<div><span id="var_2">{{ var2|safe }}</span></div>
<div><span id="var_3">{{ var3|safe }}</span></div>
在这个模板中,我有下拉菜单,使用Ajax发布它们的值,然后从烧瓶中检索它们来进行一些计算。
function submitValues(val) {
var entry1 = $('#dropdown1').val();
$.ajax({
type: "POST",
url: "/getData",
data: {entry2_id: val, entry1_id: entry1},
success: function(data){
}
});
}
完成计算后,如何将变量传递回ajax,以使用新的"计算"变量更新基本模板中的3个元素?
烧瓶中:
@app.route("/getData", methods=['POST'])
def getData():
entry2Value = request.form['entry2_id']
entry1Value = request.form['entry1_id']
#### DO CALCULATIONS HERE WHICH GENERATES 3 NEW VALUES
#### newVal1, newVal2, newVal3
#### change var1, var2, var3 from the original template to these new vals
return ??
我试图在ajax中调用带有新值的基本模板,称为flask函数,但这不会更新html。这些值是从ajax中获取到函数中的,但我的问题是如何将这些值"重新提交"到基本模板中,甚至从头开始重新渲染模板。
我可以通过ajax中的get()调用"calculation"flask函数吗
function submitValues(val) {
var entry1 = $('#dropdown1').val();
$.ajax({
type: "POST",
url: "/getData",
data: {entry2_id: val, entry1_id: entry1},
success: function(data){
$.get("/getData", function(newvar1, newvar2, newvar3)){
}
}
});
}
然后用新变量替换id元素?
谢谢!
最简单的方法是Flask路由返回JSON对象,因此ajax函数可以使用这些返回的数据。
下面是一个说明这个概念的工作示例:
app.py
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def app_home():
return render_template("index.html", variable_here = 100)
@app.route("/getData", methods=['GET'])
def getData():
entry2Value = request.args.get('entry2_id')
entry1Value = request.args.get('entry1_id')
var1 = int(entry2Value) + int(entry1Value)
var2 = 10
var3 = 15
return jsonify({ 'var1': var1, 'var2': var2, 'var3': var3 })
app.run(debug=True)
templates/index.html
<html>
<body>
Hello world! <br />
<span id="varID">{{ variable_here }}</span>
<br />
<button id="submit">Submit</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#submit").click(function() {
var val = 1;
var entry1 = 3;
$.getJSON({
url: "/getData",
data: { entry2_id: val, entry1_id: entry1 },
success: function(data){
$("#varID").html(data.var1);
}
});
});
});
</script>
</body>
</html>
尝试这样做,而不是以json格式从flask返回到ajax获取请求
相关文章:
- 使用 AJAX 向 Flask 发送 JSON 语法错误
- 通过 AJAX 和 Flask 传递值时没有响应
- 将变量从Flask传递回Ajax
- Python Flask Web服务器未接收到JSON ajax POST请求,服务器返回HTTP 200 OPTION
- 使用AJAX上传文件、处理并使用Flask将结果返回到Javascript
- 405:不允许使用方法(AJAX 查询到 Flask)
- Flask- WTF with knockout.js , JavaScript and Ajax
- AJAX CORS error with Python Flask
- Python Flask 应用程序,AJAX 帖子收到 400 个错误请求
- Python 文件上传:具有多个其他字段的 Ajax 和 Flask 上传
- 通过flask中的ajax调用访问龙卷风中的cookie
- 可过滤的自动完成,在Flask中使用ajax
- 可以't通过ajax和flask获取json
- 从Flask返回一个错误消息,并在AJAX请求后用JavaScript处理它
- Flask -使用Javascript/JQuery/Ajax提交表单(文本区域,文件,…)
- Python Flask没有接收AJAX post
- 使用ajax的Python flask get和post方法
- 如何使用jquery ajax正确地传递json对象到flask服务器
- 不是所有的链接都触发AJAX调用,只有第一个在Python Flask Application中触发AJAX调用
- Ajax调用返回列表从python flask批准