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

次のコードで定義されてuDataいると思います。Array

uData = [];

Arrayクラスにはメソッドがありませんput()。したがって、このコードは機能しません。

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

コードをコピーして間違った場所に貼り付けたと思います。

;ところで、各ステートメントの最後にセミコロンを追加して正しくインデントすると、見栄えが良くなります。

于 2013-10-06T03:04:07.137 に答える