我无法调用未定义AS3的方法put
。以下是导致问题的代码(我使用Smartfoxserver运行此服务器):
var error = ""
var nick = evt["nick"].split("~")[1]
var pass = evt["pass"]
var chan = evt["chan"]
var userList = zone.getUserList()
var sql = "SELECT * FROM meh_users WHERE Username='" + String(nick) + "' AND Password='" + String(pass) + "' LIMIT 1"
debug(">>Channel: " + chan);
var queryRes = dbase.executeQuery(sql)
if (queryRes != null)
{
for(var i = 0; i < queryRes.size(); i++)
{
user = _server.getUserByChannel(chan)
uData.put("intLevel", queryRes.get(0).getItem("Level"))
uData.put("CharID", queryRes.get(0).getItem("id"))
var access = parseInt(queryRes.get(0).getItem("Access"))
if(access > 40) {
user.setAsModerator()
}
if(access > 60) {
user.setAsAdmin()
}
uData = []
initUserProperties(user)
}
}
if (userList[nick] != pass)
{
error = "Authentication failed"
}
else
{
var obj = _server.loginUser(nick, pass, chan)
if (obj.success == false)
error = obj.error
}
// Send response to client
var response = new Object()
if (error == "")
{
response._cmd = "logOK"
}
else
{
response._cmd = "logKO"
response.err = error
}
_server.sendResponse(response, -1, null, chan)
}
答案 0 :(得分:0)
我认为uData
是Array
,由以下代码定义。
uData = [];
Array
类没有put()
方法。所以这段代码永远不会有用。
uData.put("intLevel", queryRes.get(0).getItem("Level"))
我认为您将代码复制并粘贴在错误的位置。
顺便说一下,如果你在每个语句;
的末尾添加了一个分号并正确缩进它,你的表现会更好。