我有一个注册页面的 POST 请求。它检查用户名是否已被其他用户使用:
router.post ('/register', function(req, res) {
User.findOne({username: req.body.username}, function(err, existingUser) {
if(existingUser) {
req.flash('errors1', req.body.username + ' already exists.');
return res.redirect('/register');
}
//some more code down here if the username is unique
这是表单(我正在使用 EJS):
<form method="POST" action="/register">
<% if (errors1.length > 0) { %>
<div class='form-group has-error'>
<label for="username">Stock Ticker</label>
<input type="text" name="username" class="form-control" id="username"/>
<span class="help-block"><%= errors1 %></span>
</div>
基本上,如果输入的用户名不唯一,表单下方会出现一条消息,告诉用户该用户名无法使用。但此消息仅在用户点击“提交”按钮后才会显示。
如何将 AJAX 融入其中?我以前从未真正使用过 AJAX,并且一直在阅读文档并观看教程,但我就是无法理解如何将 AJAX 合并到这段代码中。
最佳答案
您应该创建新的 api 来进行检查,并在输入控件失去焦点时触发此请求,也许代码如下所示:
server.js:
router.post ('/check_username', function(req, res) {
//CODE:check your username
})
html:
<div class='form-group has-error'>
<label for="username">Stock Ticker</label>
<input type="text" name="username" class="form-control" id="username"/>
<span class="help-block"><%= errors1 %></span>
</div>
js(Jquery):
$("#username").focusout(function(){
var value = $("#username").val();
//CODE:send the request and display result;
$.post('/check_username',{username:value},function(data){
//CODE:handle result
})
});
关于javascript - 让 AJAX 与 Node.js 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38317330/