无法调用未定义AS3的方法“put”

时间:2013-10-05 17:51:39

标签: actionscript-3 actionscript-2

我无法调用未定义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)

}

1 个答案:

答案 0 :(得分:0)

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

uData = [];

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

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

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

顺便说一下,如果你在每个语句;的末尾添加了一个分号并正确缩进它,你的表现会更好。