为什么我的页面重新加载,即使我有event.preventDefault(表单处理jquery + node.js)

时间:2017-06-09 00:09:25

标签: javascript jquery node.js

我使用jQuery使用node.js和express.js异步将数据发布到我的数据库

以下是我正在做的事情:

的index.html:

<form id='mailer' action='/mail/new' method='post'>
  <input name='mycontent'/>
  <input type='submit'/>
</form>

的script.js:

$("#mailer").submit(function(e){
  e.preventDefault();
  $.post('/mailer/new',{mycontent:mycontent});
});

app.js:

app.post("/mailer/new",function(){
  //insert into database
}

所以它实际上是提交到我的数据库但是忽略了e.preventDefault,因为当我按下提交时我的页面显示了加载轮

2 个答案:

答案 0 :(得分:2)

  1. 正如评论者指出的那样,您需要从表单的#属性中删除哈希id

    <form id='mailer'...

  2. 您需要在提交的元素周围加引号。发生JavaScript错误(最有可能是undefined变量),表单会在preventDefault()运行之前提交。

    $(#mailer).submit(function(e){...

    应该是:

    $('#mailer').submit(function(e){

答案 1 :(得分:0)

通过控制台记录事件对象找到答案。原来的事件对象(至少在使用jquery时)没有'preventDefault'函数。而是有一个'isPreventDefault()'函数,它接受真或假。

我刚刚用e.isPreventDefault(true)替换了e.preventDefault并修复了它并且现在没有重新加载