按下按钮时将数据发送到服务器

时间:2019-10-31 13:25:55

标签: javascript

下面有一个代码,它与服务器建立连接,并在调用时将命令发送到服务器:

  <script>

    var socket = new Xcomm('192.168.118.143:8080');
    socket.on('ready', function (err, data)
    {

    document.getElementById('name').addEventListener("click", function(){ 

  var userinfo = {
                'USERNAME': document.getElementById('name').value,
            };

            socket.xreq('USERLOGIN', [
                { 'USERDATA': userinfo }
            ], function (err, data) {
                if (!err)
                    console.log("Response from xcomm:", data);
                else
                    console.log("ERROR:", err, "with response from xcomm:", data);
            })
            });

 }); 

现在的问题是,当我调用将任何数据放入index.html的文本框中并按下按钮时,它将发送空数据,而不是我放入的数据。

<body>
    <div id="error-container"></div>
    <input id="name" type="text" name="name" value="" placeholder="Enter your name!">
    <button type="button" name="button" >
        Let me chat!
    </button>
</body>

1 个答案:

答案 0 :(得分:1)

当连接准备就绪时,将调用传递给socket.on的函数。

您没有使用函数声明。您没有创建名为setUsername的变量,以后可以访问。


删除onclick属性。他们通常比他们值得多麻烦,但在这里却无济于事。

将传递给socket.on的函数更改为可在DOM中找到按钮的函数(例如,使用document.querySelector),然后使用addEventListener为其附加(单击)事件处理程序

请改为在该事件处理程序内的setUsername中执行当前正在执行的工作(即,单击按钮时)。