我使用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,因为当我按下提交时我的页面显示了加载轮
答案 0 :(得分:2)
正如评论者指出的那样,您需要从表单的#
属性中删除哈希id
:
<form id='mailer'...
您需要在提交的元素周围加引号。发生JavaScript错误(最有可能是undefined
变量),表单会在preventDefault()
运行之前提交。
$(#mailer).submit(function(e){...
应该是:
$('#mailer').submit(function(e){
答案 1 :(得分:0)
通过控制台记录事件对象找到答案。原来的事件对象(至少在使用jquery时)没有'preventDefault'函数。而是有一个'isPreventDefault()'函数,它接受真或假。
我刚刚用e.isPreventDefault(true)替换了e.preventDefault并修复了它并且现在没有重新加载