0

我不能调用put未定义的 AS3 的方法。以下是导致问题的代码(我正在使用 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)

}
4

1 回答 1

0

我认为uDataArray由以下代码定义的。

uData = [];

该类Array没有put()方法。所以这段代码永远不会工作。

uData.put("intLevel", queryRes.get(0).getItem("Level"))

我认为您将代码复制并粘贴到了错误的位置。

;顺便说一句,如果您在每个语句的末尾添加一个分号并正确缩进,您会看起来更好。

于 2013-10-06T03:04:07.137 回答