下面有一个代码,它与服务器建立连接,并在调用时将命令发送到服务器:
<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>
答案 0 :(得分:1)
当连接准备就绪时,将调用传递给socket.on
的函数。
您没有使用函数声明。您没有创建名为setUsername
的变量,以后可以访问。
删除onclick
属性。他们通常比他们值得多麻烦,但在这里却无济于事。
将传递给socket.on
的函数更改为可在DOM中找到按钮的函数(例如,使用document.querySelector
),然后使用addEventListener
为其附加(单击)事件处理程序
请改为在该事件处理程序内的setUsername
中执行当前正在执行的工作(即,单击按钮时)。