如何使用Flask的渲染
我希望能得到这个类似问题的答案:
我有一个jQuery表单,可以将JSON数据发送到由Flask提供的特定URL:
<div id="form">
<form id="send">
<input type="submit" value="Continue" >
</form>
</div>
jQuery(document).on('ready', function() {
jQuery('form#send').bind('submit', function(event){
event.preventDefault();
var form = this;
json = geojson.write(vectors.features);
$.ajax({
type: "POST",
contentType: 'application/json',
url: $SCRIPT_ROOT + "/create",
dataType: "json",
success: function(){},
data: json
});
});
});
在Flask一侧,我有一个简单的函数来呈现一个显示JSON对象的HTML页面:
@app.route('/create', methods=['POST'])
def create():
content = request.json
print content
return render_template('string.html', string = content)
我知道JSON被传递,因为我可以看到它在运行Flask服务器的控制台中打印:
问题在于模板是作为Ajax请求响应的一部分呈现的,但我希望模板呈现为新的html页面:
尝试这个,
$.ajax({
type: "POST",
contentType: 'application/json',
url: $SCRIPT_ROOT + "/create",
dataType: "json",
success: function(){},
data: json
success:function(response){
document.write(response);
}
});
所以事实证明,我实际上不需要为此使用jQuery,而是我可以简单地使用带有隐藏字段的html表单提交JSON(如在此问题中暗示的):
<div id="form">
<form id="send" method="post" action="create" onsubmit="getJSON()" enctype='application/json'>
<input type="submit" value="Continue" />
<input type="hidden" name="jsonval" value=""/>
</form>
</div>
然后使用javascript来填充表单当按钮被点击时:
function getJSON(){
json = geojson.write(vectors.features);
var formInfo = document.forms['send'];
formInfo.jsonval.value = json;
}
链接地址: http://www.djcxy.com/p/71893.html