javascript - 为什么向提交事件添加 "return false;"会阻止页面刷新?

标签 javascript jquery node.js socket.io

我正在制作一个关于使用 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>

我不会费心把我拥有的东西放在后端,因为那部分一切都工作得很好。但在浏览器中,每次提交,页面都会刷新,并且在URL栏末尾添加一个/?

环顾四周,发现另一个教程(socket.io 网站上的那个),其代码基本相同,但他们在其末尾添加了 return false;提交事件。尝试了一下,效果很好。我想了解为什么这会起作用。谁能解释一下吗?另外,您能解释一下为什么要在 URL 中添加 /? 吗?

最佳答案

首先关于/? :

表单提交默认方式为GET ,但您可以使用 <form method="POST"> 更改它(如果未提供方法,默认值为 <form method="GET">)。

POST表单数据在请求 body 中传递,与 GET - 在请求网址 params .

如果你有

<form action="/submit.php" method="GET">
   <input name="foo" value="1" />
   <input name="bar" value="2" />
</form>

提交该表单后,您将获得类似于 /submit.php?foo=1&bar=2 的 URL .

在您的情况下,您没有 name 的输入属性,所以你的 GET参数为“空”( /?<params should go there> )。

您可以在以下位置阅读更多内容: http://www.w3schools.com/tags/att_form_method.asp

关于return false;

提交表单会强制页面重新加载(使用 POSTGET 请求)。如果您使用 javascript 提交表单您需要阻止此默认操作。您可以通过以下方式做到这一点

$('#chat_form').submit(function(event){
    //....
    event.preventDefault();
});

或者使用 return false; .

关于javascript - 为什么向提交事件添加 "return false;"会阻止页面刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32138102/

相关文章:

JavaScript - 验证日期

javascript - 多个电话号码验证

javascript - MS 机器人框架 : Is There a Command to Open an URL?

javascript - 尝试删除 Node.js Express MongoDB Jade 应用程序中的条目

javascript - 使用react登录成功时重定向

javascript - 将形状/ mask 动态添加到内联 svg

javascript - 输入[类型 ="range"] 选择器在 IE7 中不起作用

javascript - 如何显示图像 map 区域的轮廓(html、javascript)?

javascript - 在页面加载 Javascript 时选择默认单选输入

Javascript 或 jQuery 获取Processingjs 变量?