Javascript 为什么即使我有event.preventDefault(表单处理jquery+;node.js),我的页面仍在重新加载
我正在使用jQuery使用node.js和express.js将数据异步发布到我的数据库 以下是我正在做的事情: index.html: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(){
<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
}