gpt4 book ai didi

javascript - 在 flask 应用程序中,如何根据 View 中发现的条件在 ajax 发布期间重定向到新页面?

转载 作者:行者123 更新时间:2023-11-30 09:33:54 25 4
gpt4 key购买 nike

在我的 Flask 应用程序中,我有一个销售页面,它收集信息并通过 ajax post 请求将其保存到数据库中。可供用户记录销售额的控制台数量有限。一个用户可以从另一个用户那里接管控制台,但在这种情况下,我希望初始用户无法访问控制台。在销售页面的 View 中检索到的控制台数据具有确定这一点所需的信息(每次新销售后可用)。

我知道我无法在 View 中使用标准的“return redirect(url_for(‘dup_console’))”来执行此操作,因为我是通过 ajax 调用发帖。

我花了很多时间搜索 SO 并找到了建议在 ajax 调用的成功部分执行条件逻辑的解决方案

示例:

success: function(data) {
if (data.redirect) {
window.location.href = data.redirect;
}
}

我不确定这是否适用于我的情况,因为我不知道如何将控制台数据从 View 获取到成功例程。当我检查来自成功例程的响应信息时,它包含来自页面的 html。

有没有办法从 View 中获取我需要的信息到ajax post的成功例程?

这是我的一部分代码(我试图将其缩减为相关部分):

查看 - 销售控制台

@main.route('/sales_console/<int:id>', methods=['GET', 'POST'])
@login_required
def sales_console(id):
product_data = get_product_data()
console_data = get_console_data(id)
if request.method == 'POST':
returned_data = json.dumps(request.get_json())
returned_data_dict = ast.literal_eval(returned_data)

<review returned data and store in database>

<retrieved data indicates if console id used by other device>
if duplicate_console:
redirect to page indicating console loss (I know I can’t do it like this)

return render_template('sales_console.html', product_data=product_data, console_data=console_data)

可用于 sales_console.html 模板的 Java 脚本例程

function record_sale(event,track_sales_data,console_number)
{
var sales_data_json = JSON.stringify(track_sales_data);
var url = "/sales_console/"+console_number;
$.ajax({
url: url,
type : "POST",
data: sales_data_json,
contentType:"application/json",
success: function(response) {
console.log("success!!!");
console.log(response);
},
error: function(error) {
console.log("failure!!!");
console.log(error);
}
});
};

最佳答案

在 python 中,返回任何你想在成功时重定向的路径作为你返回的 json 对象的一部分,像这样:

from flask import jsonify

# ...

if request.method == 'POST':
# ...
return jsonify(dict(redirect='path'))

在 javascript 中,将返回的路径分配给 location.href 属性,以触发重定向。像这样:

// ...
success: function(response) {
if (response.redirect) {
window.location.href = response.redirect;
}
}

关于javascript - 在 flask 应用程序中,如何根据 View 中发现的条件在 ajax 发布期间重定向到新页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44682326/

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