在POST请求后,我无法让Flask向HTML页面添加文本。 POST返回一个200代码,表示它已经通过,当我点击按钮时,我会在终端中看到它。另外,我看到在单击按钮时打印了request.data,因此看起来python代码输入了' POST'请求,但它永远不会使用结果文本呈现模板。有什么想法吗?
HTML:
<button onclick="do_ajax()">Do Ajax</button>
<p>{{result}}</p>
JavaScript的:
function do_ajax() {
var req = new XMLHttpRequest();
req.open("POST", "/index/", true);
var blob = new Blob(['abc123'], {type: 'text/plain'});
req.send(blob);
}
Flask / Python:
@app.route('/<string:index>/', methods=['GET','POST'])
def my_form_post(index):
if request.method == 'POST':
print request.data
return render_template('%s.html' % index, result = "It's working!")
elif request.method == 'GET':
return render_template('%s.html' % index)
答案 0 :(得分:0)
您正在发送请求,但在您的客户端发送请求后,您并没有真正做任何事情。您应该渲染响应烧瓶将您送回客户端。请注意,通常您不使用ajax来呈现整个页面,而是使用服务器发回的值来使用JSON格式填充页面上现有元素中的内容。
这是一个可以让你前进的片段:
<h2 onclick="do_ajax()"> click here</h2>
<script>
function do_ajax() {
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
if (req.status == 200) {
alert(req.responseText);
}else{
alert(req.status);
}
};
req.open("POST", "/index/", true);
var blob = new Blob(['abc123'], {type: 'text/plain'});
req.send(blob);
}
<script>