我正在为服务器端使用 CherryPy,在客户端使用 HTML、CSS 和 jQuery 制作一个网页。我还使用 mySQL 数据库。
我有一个供用户注册该网站的工作表单 - 创建用户名和密码。我使用 jQuery 向 CherryPy 发送 AJAX POST 请求,CherryPy 查询数据库以查看该用户名是否存在。如果用户名存在,则提醒用户,如果不存在,则将其添加到数据库并提醒成功。
$.post('submit', postdata, function(data) {
alert(data);
});
成功的 jQuery POST。
我想更改表单,以便在提交时不检查用户名是否存在,而是在用户名输入的模糊事件上发出 GET 请求。该函数被调用,并转到 CherryPy,但随后我收到一条错误消息:HTTPError: (404, 'Missing parameters: username')
.
$.get('checkUsername', getdata, function(data) {
alert(data);
});
jQuery GET 失败。
CherryPy:
@cherrypy.expose
def submit(self, **params):
cherrypy.response.headers['Content-Type'] = 'application/json'
e = sqlalchemy.create_engine('mysql://mysql:pw@localhost/6470')
c = e.connect()
com1 = "SELECT * FROM `users` WHERE `username` = '" + params["username"] + "'"
b = c.execute(com1).fetchall()
if not len(b) > 0:
com2 = "INSERT INTO `6470`.`users` (`username` ,`password` ,`website` ,`key`) VALUES ('"
com2 += params["username"] + "', MD5( '" + params["password"] + "'), '', NULL);"
a = c.execute(com2)
c.close()
return simplejson.dumps("Success!")
c.close()
return simplejson.dumps("This username is not available.")
@cherrypy.expose
def checkUsername(self, username):
cherrypy.response.headers['Content-Type'] = 'application/json'
e = sqlalchemy.create_engine('mysql://mysql:pw@localhost/6470')
c = e.connect()
command = "SELECT * FROM `users` WHERE `username` = '" + username + "'"
a = c.execute(command).fetchall();
c.close()
sys.stdout.write(str(a))
return simplejson.dumps("")
我看不出两者之间有任何区别,所以我不知道为什么 GET 请求给我带来了问题。任何对我可能做错的事情的洞察都会有帮助。
如果您对 jQuery、CherryPy、配置文件等有任何想法,我将非常感激。
* *EDIT