之前使用flask 写过类似于web qq 的一个东西 现在试着使用tornado 在使用ajax的时候出现了一个parsererror 我使用的json格式 具体的代码如下 請指教
main.py
#-*-coding:utf-8-*-
import os.path
import tornado.web
import tornado.httpserver
import tornado.options
import tornado.ioloop
import json
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from tornado.options import define,options
define("port",default=8080,help="run on the given port",type=int)
class Application(tornado.web.Application):
def __init__(self):
handlers=[(r'/',IndexHandler),(r'/chat',ChatHandler)]
settings=dict(
template_path=os.path.join(os.path.dirname(__file__),"templates"),
debug=True,
)
tornado.web.Application.__init__(self,handlers,**settings)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write(u'你好主任 我是主页君!')
class ChatHandler(tornado.web.RequestHandler):
def get(self):
self.render('chat.html')
def post(self):
name=self.get_argument('name')
password=self.get_argument('password')
if name!="zhengxia":
self.write(json.dumps({'name_warning':u"用户名错误!"}))
if password!="jin0123":
self.write(json.dumps({'pass_warning':u"密码错误!"}))
if name=="zhengxia" and password=="jin0123":
self.write(json.dumps({'login_success':u"登录成功!"}))
self.render('chat.html')
if __name__=="__main__":
tornado.options.parse_command_line()
httpserver=tornado.httpserver.HTTPServer(Application())
httpserver.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
chat.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单提交君</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function ajaxForm(){
$(function(){
$.ajax({
method: 'POST',
contentType: 'application/x-www-form-urlencoded;charset=UTF-8',
url: 'http://localhost:8080/chat',
dataType: 'json',
data:{
'name' : $('input[name="name"]').val(),
'password' : $('input[name="password"]').val()
},
error: function(xhr,err){
alert('请求失败,原因可能是:'+err+'!');
},
success: function(data,textStatus){
if (data.name_warning){
alert(data.name_warning);
}
else if (data.pass_warning){
alert(data.pass_warning);
}
else if (data.login_sucess){
alert(data.login_success);
}
$('input[name="name"]').val('');
$('input[name="password"]').val('');
}
});
});
return false;
}
</script>
</head>
<body>
<p class="render_form">
<h1>提交吧 表单君</h1>
<form method="post" name="form" action="" onsubmit="return ajaxForm()">
<input type="text" name="name" /><br>
<input type="password" name="password" /><br>
<input type="submit" value="提交" />
</form>
</p>
</body>
</html>
不在这里丢人了 多加了一句
self.render('chat.html')
flask 非插拔视图写习惯了