由于您已经使用能够处理响应的 ajax 方法,因此您可以直接返回 JSON 响应,而不是渲染新模板:
return jsonify(result=result)
另外,您可能希望将 JQuery 方法的 GET 更改为 POST :
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="../static/main.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type=text/javascript>
$(function() {
$('a#process_input').bind('click', function() {
$.post('/', {
story: $('textarea[name="story"]').val(),
}, function(data) {
$('#result').text(data.result);
});
return false;
});
});
</script>
</head>
(注意,你需要写$.post('/background_process'
如果你保留两个独立的函数,而不是我下面建议的函数。)
然后,您可以将代码收集在一个函数中,模板将使用 GET 方法呈现,并且响应将从 POST 呈现:
app = Flask(__name__)
@app.route('/', methods= ["GET", "POST"])
def homepage():
if request.method == 'POST':
story = request.form.get('story')
if story:
result = myfunction(story)
return jsonify(result=result)
else:
return jsonify(result='Input needed')
return render_template('index.html')
if __name__ == "__main__":
app.debug=True
app.run()