用Google App Engine+jQuery实现AJAX方式的留言板
2009 2 9 04:13 PM 3318次查看
分类:Google App Engine 标签:Google App Engine, Python, jQuery
# -*- coding: utf-8 -*-
#因为文件中用到了中文,所以编码写成UTF-8。不过如果只是在本地测试,是可以不用写的。
#此外,如果response里包含unicode数据,且未指定输出字符集,将会自动加上charset=utf-8的header。
import cgi
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class MainPage(webapp.RequestHandler):
def get(self):
self.response.out.write("""
<html>
<head>
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1.3.1");
//这里必须结束这个script,否则未加载完就运行下面的代码,导致$不存在
</script>
<script type="text/javascript">
$(document).ready(
function() {
$("#submit_msg").click(
//点击submit按钮时运行这个函数
function() {
//由于不需要错误处理,我直接用$.post了,否则要用$.ajax
$.post(
"/getmsg", //POST到的URL
{content: $("#content").val()}, //POST的数据
function(respons) {$('#msg').append(respons);}
//成功响应执行的函数
//respons是服务器返回的响应内容,这里将其直接附加到msg里
);
}
)
}
);
</script>
</head>
<body>
<div id="msg"></div>
<div><textarea id="content" rows="3" cols="60"></textarea></div>
<div><input type="submit" value="submit" id="submit_msg" />
<img src="http://code.google.com/appengine/images/appengine-silver-120x30.gif"
alt="Google App Engine 支持" />
<!--
这个图像只是为了表达这是AJAX效果。
因为一般的提交需要重新载入页面,图像会有个刷新过程;
但这里不会刷新。
-->
</body>
</html>""")
class Getmsg(webapp.RequestHandler):
#这个就用于处理上面POST的内容
def post(self):
content = self.request.get('content')
if content:
self.response.out.write('You wrote:<blockquote><pre>%s</pre></blockquote>'
% cgi.escape(content))
#cgi.escape用于转义用户输入中的HTML代码标识符
else:
self.response.out.write('You wrote nothing.')
application = webapp.WSGIApplication(
[('/', MainPage),
('/getmsg', Getmsg)],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
为了减少代码数量,我就没有把HTML写在模板里了,也没去用数据库和用户登录。注释应该都比较好懂的,简单来说就是如下过程:
1.用jQuery的post方法向/getmsg传递content中的内容;
2./getmsg被映射到了Getmsg类上,这个类的post函数将传来的内容又输出了回去;
3.jQuery的post方法接收到响应,把响应内容附加到msg里。
jQuery确实是个很方便的东西啊~
0条评论 你不来一发么↓