所以,基本上我正在尝试从我的ajax帖子向我的节点js后端发送请求。然后我试图从节点js返回响应并更新我的视图。现在,这是发生的事情。我可以在控制台中看到整个html像页面一样加载,而不仅仅是更新视图中的resulttoken。我真的很困惑。请指出我的错误。这是我到目前为止所尝试的。
$(document).ready(function () {
$('#Notification_NumberOfContractors').keyup(function () {
var empty = false;
$('#Notification_NumberOfContractors').each(function () {
if ($(this).val() == '') {
empty = true;
}
});
if (empty) {
$('#ProjectDetailsNextPage').attr('disabled', 'disabled');
} else {
$('#ProjectDetailsNextPage').removeAttr('disabled');
}
});
})()
服务器
<!DOCTYPE html>
<html>
<body>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<form id="registerSubmit">
Phonenumber:<br>
<input type="text" name="phonenumber" id="phonenumber">
<br>
Review:<br>
<input type="text" name="review" id="review">
<br><br>
<input type="submit" value="Submit" onclick="gettoken()">
<br>
Token: <%=resulttoken%>;
</form>
<script type="text/javascript">
function gettoken() {
event.preventDefault();
var phonenumber = $("#phonenumber").val();
var review = $("#review").val();
$.ajax({
url: '/home',
data: {
"phonenumber": phonenumber,
"review": review
},
error: function (err) {
console.log("ERROR",err)
},
success: function (info) {
console.log("info",info);
},
type: 'POST',
});
}
</script>
</body>
</html>
这是在控制台日志上加载的内容
app.post("/home", function (req, res) {
var s = -1;
var t = -1;
var m = -1;
var phonenumber = req.body.phonenumber;
var review = req.body.review;
console.log(phonenumber);
fd.insertreview(phonenumber,review).then(function(v) {
if(v=="1") {
console.log("Your review has been inserted successfully");
s = md.getRand();
console.log("Unique number is",s);
fd.checkifuniquenumberexists(s).then(function(u){
if(u!="1"){
console.log("Unique number doesnt exist");
fd.inserttoken(s,phonenumber).then(function (p) {
if(p=="1"){
console.log("Token has been inserted successfully");
res.render('trial',{"resulttoken":s});
}
})
}
});
}
});
});
答案 0 :(得分:2)
问题在于这一行
res.render('trial',{"resulttoken":s});
您将整个页面作为回复返回,如果您只需要令牌,则可以将其作为JSON响应的一部分返回,例如。
res.status(200).json({ token: s });
然后在客户端
$.post('/home', { phonenumber, review }, res => {
// use res.token
console.log(`Token: ${res.token}`);
})
.fail(console.error);