tornado和ajax交互:
$(function () {
$('#htmlid1').click(function () {
var a = $('#htmlid2').val();
$.ajax({
type: "post",
dataType: "json",
url: "/any",
data: {
a:a
},
success: function (res_data) {
if (res_data) {
$('#htmlid3').show()
}
}
},
error: function () {
alert("failed")
}
});
});
});
class SearchHandler(tornado.web.RequestHandler):
def post(self):
itemname=self.get_argument('a')
resvalue={'ab':abw','cd':'cdw'}
self.write(json.dumps(resvalue))
ajax里定义了数据格式后,tornado如何解析数据都行,只要满足自己的需要,但是返回的数据也一定要满足ajax定义的数据格式,否则ajax解析不了就不会执行success后的函数。
由于tornado强大的网页模板渲染能力,就可以把一些本来靠ajax渲染的工作交给tornado来完成,此时tornado需要调用self.render方法。
此时如果也要jquery来渲染前端页面的话,可以将参数放在网页模板里:
{% block head %}
<script type="text/javascript" >
var to_jquery_data={%raw tornado_render_data%}
</script>
{% end %}
把相关参数用render方法渲染到模板里,同时记得加raw避免转义即可。