Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript,您的';魔术';数据来自哪里?_Javascript_Json_Node.js_Sockets_Socket.io - Fatal编程技术网

Javascript,您的';魔术';数据来自哪里?

Javascript,您的';魔术';数据来自哪里?,javascript,json,node.js,sockets,socket.io,Javascript,Json,Node.js,Sockets,Socket.io,在Java编程语言中,方法中可以使用的所有信息都必须是类的一部分,或者通过参数传递,我对JavaScript神奇地生成非常重要的数据的位置感到非常困惑 在本例中,我使用Socket.IO并尝试在连接后调用登录方法,现在我可以使用匿名函数,但我个人认为它们真的很难看 这是我的密码: socketIO.sockets.on('connection', function(socket) { console.log("Connection maid."); socket.on('logi

在Java编程语言中,方法中可以使用的所有信息都必须是类的一部分,或者通过参数传递,我对JavaScript神奇地生成非常重要的数据的位置感到非常困惑

在本例中,我使用Socket.IO并尝试在连接后调用登录方法,现在我可以使用匿名函数,但我个人认为它们真的很难看

这是我的密码:

socketIO.sockets.on('connection', function(socket) {
    console.log("Connection maid.");
    socket.on('login', login);
});

function login(json) {
    sqlConnection.query('select * FROM Accounts', function(err, rows, fields) {
       if(err) throw err;

        for(var row in rows) {
            if(rows[row].Username == json.username) {
                console.log("Exists");
                socket.emit('login', {nuel: ''});
            }
        }
    });
}
正如您所看到的,
login
函数在套接字接收到登录消息时被调用,json对象被神奇地传递给它。我不知道它来自何处,也不知道它是由什么产生的,也不知道如何将附加参数传递给该方法,因为它会破坏/覆盖
magic
数据

我遇到的错误是,socket在当前上下文中不存在,因为它没有传递给登录函数,但是当我尝试传递它时,保存为
json
的对象完全不存在了。。。。这里的数据来自哪里


我完全不明白这一点,我怎样才能传递这些信息来调用这个方法,而不完全破坏一切

您能否创建一个名为“socket”的全局变量,将其分配给一个socket对象,然后将事件绑定到该对象,以便可以从该范围内的任何函数访问它?另外一个变量仅用于title:)