将数据从节点服务器发送到ajax
我需要检查用户输入的令牌是否存在,
我的节点js控制器:
const checktoken = async (req, res) => {
const token = req.body.token
User.findOne({'token': token }).then((user) => {
if (user) {
return res.end("GOOOOD");
}
return res.end("Baad");
})
.catch((err) => console.log(err))
}
Ajax面:
$(document).ready(function(){
$('#form').submit(function (e) {
// e.preventDefault()
$.ajax({
type: 'POST',
url: '/api/token/'
})
.done(function(data) {
alert(data)
})
.fail(function(xhr, status, error) {
console.log("Errrrrrr " + error);
})
.always(function(data){
});
})
})
html形式:
<form class="form-inline search-form" action ="/api/token" method="POST" id="form">
<div class="form-group label-floating">
<input name ="token" id="token" >
</div>
<button id="subBut" type ="submit"> Verify </button>
</form>
问题是,无论好坏,我总是会收到警报(BAD令牌),然后以文本格式打印另一页并获得良好效果
例如,如果我放置了良好的令牌:警报是错误的令牌,则打印了另一页:良好的令牌(这意味着来自节点的结果是可以的)AJAX问题
回答如下:首先,您正在双重提交,因为您的form
将提交,而您的ajax
呼叫也会触发。更改form
上的操作,以确保它不会尝试自行发布。另外,您没有在ajax调用中包含任何数据:
<form class="form-inline search-form" action ="javascript:void(0)" id="form">
<div class="form-group label-floating">
<input name ="token" id="token" >
</div>
<button id="subBut" type ="submit"> Verify </button>
</form>
$(document).ready(function(){
$('#form').submit(function (e) {
// e.preventDefault()
$.ajax({
type: 'POST',
contentType: 'application/json',
url: '/api/token/',
data: JSON.stringify($('#token').val())
})
.done(function(data) {
alert(data)
})
.fail(function(xhr, status, error) {
console.log("Errrrrrr " + error);
})
.always(function(data){
});
})
})