有很多问题都有同样的问题,但我发现的所有问题都只会告诉你实际的javascript是如何工作的,而不是这种事情的路由。
所以我现在尝试使用Node.js,Express和Mongodb来实现无限滚动系统的html和路由方面有点迷失。
我知道如何检查用户何时触及底部,我知道你需要在app.post路由中使用某种监听器来告诉数据库附加数据。但我不知道发布了什么'以及如何路由它。
它只是一个onClick监听器,正在观看"提交"价值是真的吗?当用户点击底部时,它变为真,Express获得POST,再加载十个条目。
我实际上并不理解在路由文件中等待事件值的实际概念,我认为分离前端和后端的重点意味着你不能等待一个值为&#34真"在javascript中并返回。
我认为这是一个非常普遍的问题,我的代码可能不需要。
因此,如果有人能够给出一个相当广泛的解释,我将如何看待整个事件监听事物及其路由,那将会有很大帮助。目前似乎不可能。
答案 0 :(得分:1)
"正在做什么'发布'"
当表单获得提交时,它会执行' POSTing'。 A"提交"是一个动作,就像一个函数调用,而不仅仅是一个被观察为真或假的布尔值。
<form method="POST" action="/url">
<input name="name" value="value">
<button>Submit</button>
</form>
此处单击该按钮时,将向服务器发出POST请求。
app.post('/url', function(res, res, next){
req.body //=> {name: 'value'}
});
它只是一个onClick监听器,正在观看&#34;提交&#34;价值是真的吗?
onClick
事件是一个事件。侦听器是附加到它的函数,在该事件发生时触发。
<button onClick="fn()"> Call `fn();` </button>
function fn(){
console.log('that button was pressed');
}
有很多这样的事件。您可能正在使用的是onScroll
,它会在滚动页面时触发。这是一个非常敏感的事件,它会触发滚动位置中最小的波动。这可能是您的表单一次多次发布的原因。
所以我可以将一个函数
example()
粘贴到我的路由/服务器文件中,然后使用<button onClick="example()">Call 'example()';</button>
然后将example()
编码为db.collection.find().limit(10)
以使其可以推送数据库请求?
不,您正在混合客户端和服务器端代码。
HTML元素(如<button>
)和与之关联的JavaScript(如onClick
事件)都位于客户端,位于浏览器上。
您的服务器端代码NodeJS只能通过HTTP请求与客户进行交互或响应,例如GET /
,POST /form
。
你需要的可能是AJAX,它基本上使用客户端JavaScript来制作和处理上述对服务器发出的请求的结果。