【发布时间】:2015-11-15 06:25:28
【问题描述】:
我正在做一个关于使用 Node.js 和 socket.io 制作聊天服务器的教程。这是我在 html 中的内容:
<form id='chat_form'>
<input id='chat_input' />
<button>Send</button>
</form>
<script type='text/javascript'>
var socket = io();
$('#chat_form').submit(function(){
var message = $('#chat_input').val();
socket.emit('messages', message);
$('#chat_input').val('');
});
</script>
我不会费心把我拥有的东西放在后端,因为那部分工作正常。但是在浏览器中,每次提交,页面都会刷新,并且在网址栏末尾添加了一个/?。
环顾四周,发现另一个教程(socket.io 网站上的那个),代码基本相同,但他们在提交事件的末尾添加了return false;。试过了,效果很好。我想了解为什么会这样。谁能解释一下?另外,您能解释一下为什么将/? 添加到URL 中吗?
【问题讨论】:
-
返回假;阻止表单的操作,因此它停止提交表单,因为这是表单的操作(它是 this in jquery 的纯 js 版本)。您通常应该在带有 ajax 调用的表单提交上使用它(以阻止页面刷新)。如果您的表单上没有方法,它看起来好像在提交时使用了
get方法,这就是为什么要添加 ?到 url 并刷新页面 - see this post -
LOL 我想知道为什么这个问题得到 4 票。这不属于 node.js 标签。我觉得唯一的原因是这个问题很容易回答:P
标签: javascript jquery node.js socket.io