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

Javascript 为什么即使我有event.preventDefault(表单处理jquery+;node.js),我的页面仍在重新加载,javascript,jquery,node.js,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> app.js: app.post("/mailer/new",function(){

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

以下是我正在做的事情:

index.html:

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

app.post("/mailer/new",function(){
  //insert into database
}
因此,它本质上是提交到我的数据库,但忽略了e.preventDefault,因为当我按submit时,我的页面显示了加载轮

  • 正如一位评论者所指出的,您需要从表单的
    id
    属性中删除散列
    #

    
    
  • 正如一位评论者所指出的,您需要从表单的
    id
    属性中删除散列
    #


    通过控制台记录事件对象找到了答案。结果表明事件对象(至少在使用jquery时)没有“preventDefault”函数。而是有一个“isPreventDefault()”函数,它接受true或false


    我刚刚用e.isPreventDefault(true)替换了e.preventDefault,这修复了它,现在不再重新加载它。

    通过控制台记录事件对象找到了答案。结果表明事件对象(至少在使用jquery时)没有“preventDefault”函数。而是有一个“isPreventDefault()”函数,它接受true或false


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

    处理程序可能没有正确地定位选择器。。。我会尝试从您的表单
    id=''mailer'
    中删除
    ,然后在jQuery选择器
    $(“#mailer”).submit(…
    e.stopPropagation();抱歉@mfink这是我的代码中的一个输入错误,实际上我的代码是“#mailer”e.stopPropagation())也无法让它工作。我过去一直使用preventDefault,但它已经工作了。不确定为什么它现在不工作。您可以验证jQuery是否已加载到客户端吗?如果您放置
    console.log('blah')
    在post语句之前,它是否在表单提交之前显示在检查器中?处理程序可能没有正确地定位选择器……我会尝试从表单中删除
    id=''#mailer'
    ,然后在jQuery选择器
    $(“#mailer”)。提交(…
    e.stopPropagation();抱歉@mfink这是我的代码中的一个输入错误,我确实有它,因为“#mailer”e.stopPropagation()也不起作用。我过去一直使用preventDefault,它也起作用了。不确定为什么它现在不起作用。你能验证jQuery是在客户端加载的吗?如果你放一个
    console.log('blah'))
    在post语句之前,它是否在表单提交之前显示在检查器中?还需要从html中的id中删除
    jquery的mailer是一个拼写错误,我将其命名为“#mailer”,html也是如此,在我的html中,我将其命名为“mailer”而不是“mailer”。还需要从html中的id中删除
    。#jquery的mailer是一个打字错误,我将其命名为“#mailer”,html也是如此,在我的html中,我将其命名为“mailer”而不是“mailer”。有趣的查找。对于更常见的解决方案,您还可以尝试将
    返回false;
    作为jQuery提交处理程序中的最后一行。有趣的查找。对于更常见的解决方案,您还可以尝试将
    返回false;
    作为jQuery提交处理程序中的最后一行。
    app.post("/mailer/new",function(){
      //insert into database
    }