【发布时间】:2011-06-08 05:23:15
【问题描述】:
我正在为服务器端使用 CherryPy,在客户端使用 HTML、CSS 和 jQuery 制作网页。我也在使用 mySQL 数据库。
我有一个供用户注册网站的工作表格 - 创建用户名和密码。我使用 jQuery 向 CherryPy 发送 AJAX POST 请求,该请求查询数据库以查看该用户名是否存在。如果用户名存在,则提醒用户,如果不存在,则将其添加到数据库并提醒成功。
$.post('submit', postdata, function(data) {
alert(data);
});
成功的 jQuery POST。
我想更改表单,以便在提交时不检查用户名是否存在,而是根据用户名输入的 blur 事件发出 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、配置文件等有任何想法,我将不胜感激。
* *编辑 ****
应一些朋友的要求,这里有一些更多的信息。
我如何计算 getdata:var getdata = $("#username").val();
服务器正在查询的URL:(嗯,这就是PuTTy所说的来自/去往服务器,我不知道服务器端的废话)GET /checkUsername?noram HTTP/1.1
【问题讨论】:
-
如果你写在 url yourserver/checkusername?username=something 。行得通吗?如果是,请向我们展示您的 getdata 参数中的内容
标签: jquery ajax json cherrypy http-status-code-404