javascript - 无法让 socket.emit 处理表单值

标签 javascript python flask socket.io flask-socketio

我一直在尝试下面代码的许多不同组合,以弄清楚如何使 Flask-SocketIO 从文本区域发出一个值。我需要使用 JavaScript,而不是 JQuery。我已经用一个按钮测试了我与服务器的连接和通用代码模板(它适用于传输按钮数据值),但我还没有在网上找到任何适用于我的 textarea 表单的解决方案。

如何将表单值放入数据中,并将该值发回并发布到 <ul> 中HTML 页面的一部分?这是我所拥有的:

JavaScript:

socket.on('connect', function(data){
    document.querySelector('#newmessage').onsubmit=()=>{
        const text = document.querySelector('#shoutout').value;
        socket.emit('send message', {"text": data.text});
    };
});
socket.on('list message', data =>{
    const li = document.createElement('li');
    li.innerHTML = `Message: ${data.text}`;
    document.querySelector('#messages').append(li);
});

我还在代码的前半部分尝试了这个,将表单值放入 data.text 中,并让它在每次点击提交按钮时发出。它将来自 textarea 的消息放入 URL("/?shoutout=hello"),但它仍然没有在无序列表中发布任何内容。

socket.on('connect', function(data){
    document.querySelectorAll('#send').forEach(button=>{
        button.onclick = ()=>{
             document.querySelector('#shoutout').value = data.text;
             socket.emit('send message', {"text": data.text});
         };
    });
});

Python/ flask :

@socketio.on("send message")
def send(data):
    text = data["text"]
    emit("list message", {"text":text}, broadcast=True)

HTML:

<body>
    <ul id="messages"></ul>
        <br>
        <form id="newmessage">
            <textarea id="shoutout" placeholder ="Type your message" rows="3"></textarea>
            <input id="send" type="submit" value="Send">
        </form>
</body>

最佳答案

我相信您的第一个 JS 代码片段应该是:

socket.on('connect', function(data){
    document.querySelector('#newmessage').onsubmit=()=>{
        const text = document.querySelector('#shoutout').value;
        socket.emit('send message', {"text": text});  // <--- this should be text, not data.text!
    };
});

data.text 究竟是什么?

关于javascript - 无法让 socket.emit 处理表单值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58292567/

相关文章:

javascript - 使用 jQuery 使文本淡入淡出

python - 为什么这个 linux 命令在使用 python 执行时不起作用?

python - 使用 BeautifulSoup 查找与特定关键字相关的链接

python - Jinja 模板中的嵌套打印语句

python - 从 Flask 运行 Scrapy

javascript - 将预加载器添加到 div 标签

javascript - CSS 网格 - 计算列数 (javascript)

python - Pandas 设置多级列索引

python - 使 sql 转储可下载

javascript - 如何清理 HTML/XML?