gpt4 book ai didi

javascript - 如何将 Json 数据从 javaScript 发送到 Flask

转载 作者:行者123 更新时间:2023-11-30 15:34:02 25 4
gpt4 key购买 nike

我正在尝试制作动态表单生成器。在构建过程之后,我试图通过脚本将所有表单数据放入 JsonObject 并将其传递给 flask View ,以便我可以将它们显示给用户。但是我无法正确设置它。这是调用 javascript 的按钮

<form action="/preview" method="post" role="form">
<button class="btn btn-primary" name = "submit" id = "submit">submit</button>
</form>

这是我进行 ajax 调用的脚本。

<script>
$(document).ready( function() {
$('#submit').click(function() {
var formdata = serialize();
$.ajax({
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(formdata),
dataType: 'json',
url: 'http://192.168.58.206:5000/index',
success: function (e) {
console.log(e);
},
error: function(error) {
console.log(error);
}
});
});
});
</script>

这是我尝试在 flask python 中渲染的方式。

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
asd = request.json
session['formdata'] = asd
if 'formdata' in session:
return json.dumps({'success': True}), 200, {'ContentType': 'application/json'}
return render_template("index.html")

@app.route('/preview', methods=['GET', 'POST'])
def preview():
if 'formdata' in session:

renderedform = formbuilder(json.dumps(session['formdata']))
renderedform = renderedform.renderform()
session.pop('formdata')
return render_template("asd.html",renderform = renderedform)
return "Error"

我的 renderdorm() 方法将 json 对象作为参数并为表单创建相应的 html block 。

但是当我以这种方式运行它时,有时按钮操作会在脚本运行并创建 json 对象之前将我定向到/preview 路由。所以这会导致 session 的表单数据为无。

关于如何传递该 json 对象以在预览中呈现的任何想法?

最佳答案

您需要删除表单上的操作字段,因为当用户单击按钮操作时调用的 session 可能未设置

<form method="post" role="form">
<button class="btn btn-primary" name = "submit" id = "submit">submit</button>
</form>

然后在 ajax 上你需要在成功时设置窗口位置

  <script>
$(document).ready( function() {
$('#submit').click(function() {
var formdata = serialize();
$.ajax({
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(formdata),
dataType: 'json',
url: 'http://192.168.57.223:5000/createform',
success: function (e) {
console.log(e);
window.location = "http://192.168.57.223:5000/preview";
},
error: function(error) {
console.log(error);
}
});
});
});
</script>

那么你的 python 脚本应该看起来像这样你需要说你获取了值并且 ajax 将设置所需的窗口位置

@app.route('/index', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
asd = request.json
print(asd)
session['formdata'] = asd
if 'formdata' in session:
return json.dumps({'success': True}), 200, {'ContentType': 'application/json'}
return render_template("createform.html")

关于javascript - 如何将 Json 数据从 javaScript 发送到 Flask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41848487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com