flask return无法处理html代码中的post-jquery请求



我遇到了一个问题,表单是通过jquery post提交的。我正在处理表单数据,需要提交特定的数据。我无法使用内置的POST,因为没有使用dataTables插件提交多个页面,所以我必须在提交前修改javascript中的数据。以下代码的工作原理是正在执行"url_fo('aws_execute'("中的代码,但浏览器中没有加载页面。

因此,在这个例子中,"123"会被打印到python控制台,但网站不会被重定向,并且";请测试工作";不会在浏览器中显示。

如果我在帖子发布后做了一个功能,我可以获得控制台日志或警报等信息,但不确定如何重定向页面,因为我想让一个新页面显示结果,而不是警报等。你知道如何做到这一点吗?

谢谢!

<aws_options.html页面>

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<link href="{{ url_for('static', filename='css/jquery.dataTables.min.css') }}" rel="stylesheet">
<script src="{{ url_for('static', filename='jquery-3.5.1.js') }}"></script>
<script src="{{ url_for('static', filename='jquery.dataTables.min.js')}}"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#options').on('submit', function(e){
// Prevent actual form submission
e.preventDefault();
var data = table.$('input,select,textarea').serializeArray();
var data2 = $(this).serializeArray();
var data3 = $.merge(data,data2);
not working--->$.post({
url: '{{ url_for('aws_execute') }}',
data: data3
},
function(data3,status){
alert("Data: " + data3 + "nStatus: " + status);
});
});
} );
</script>
</head>
<body>
<h1>AWS Options</h1>
<form id="options" method="POST" action="{{ url_for('aws_execute') }}">
<button type="submit">Submit Form</button>
(FORM STUFF)
</body>
</html>

在python中:

@app.route('/aws_execute', methods=['POST'])
@saml_manager.login_required
def aws_execute():
print('123')
return 'test please work'

由于它在Javascript中,您只需要简单地使用路由本身。无需使用url_fr((。

$.post({
url: '/aws_execute',
data: data3
});

$.post发出AJAX请求,因此不会自动呈现对它的任何响应。如果您的意图是对POST请求进行响应,为什么不允许表单遵循其默认行为(即,去掉所有jQuery(?

否则,如果你希望它是AJAX,你需要包括一个回调,以指定在你得到响应后如何处理数据。例如,试试这个,看看它是否将test please work记录到你的浏览器控制台:

$.post({
'{{ url_for('aws_execute') }}',
data3,
responseData => console.log(responseData)
});

尝试以下操作:

from flask import render_template
@app.route('/aws_execute', methods=['POST'])
@saml_manager.login_required
def aws_execute():
print('123')
return render_template(url_for('aws_execute'))

最新更新