我正在使用CherryPy作爲服務器端,HTML,CSS和jQuery在客戶端的網頁。我也在使用mySQL數據庫。修復404:從GET請求到CherryPy缺少參數錯誤
我有一個用戶註冊該網站的工作表單 - 創建一個用戶名和密碼。我使用jQuery向CherryPy發送一個AJAX POST請求,CherryPy查詢數據庫以查看該用戶名是否存在。如果用戶名存在,請提醒用戶,如果不存在,請將其添加到數據庫並提醒成功。
$.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:[email protected]/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:[email protected]/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由服務器查詢:(好吧,這是膩子說是從/去服務器端傳來的,我不知道服務器端廢話)
GET /checkUsername?noram HTTP/1.1
如果你在寫url http:// yourserver/checkusername?username = something。它工作嗎?如果是這樣,告訴我們什麼是你的getdata參數 – sirrocco 2011-01-13 04:50:59