我正在使用node,express和mongoose开发一个应用程序。在我的登录模块res.render()
中,该函数将代码作为字符串格式数据发送回客户端ajax调用。而我希望它呈现特定的视图。 ajax调用是post类型调用。我可以在ajax的成功字段中看到字符串格式的整个HTML。
我确实搜索过类似的问题和解决方案,但我找不到任何问题。让我知道我做错了什么。
$.ajax({
type: 'POST',
url: '/login',
data: userDetail,
success: function(data){
console.log(data);
},
error: function(err){
$("p").text("Invalid User Details")
}
});
app.post('/login', urlencodedParser ,function(req,res){
console.log(req.body);
User.find({name : req.body.name , password : req.body.pass},function(err,data){
if (data.length != 0){
Todo.find({},function(err,todo){
if (err) throw err;
var token = jwt.sign(req.body,config.secret,{
expiresIn : '1h'
});
res.render('todo',{
todos : todo,
token : token
});
});
}
else
res.status(401).json({ msg : "Invalid User" });
});
});
答案 0 :(得分:3)
Ajax调用本身不会更改浏览器中显示的内容。他们只是获取数据,而他们的Javascript代码决定了如何处理这些数据。无论是什么类型的Ajax调用,GET,POST等都是如此......
如果要更改当前页面以显示使用Ajax获取的内容,则必须自己将该内容插入当前页面。
或者,在POST的情况下,您可能想要提交HTML表单,然后浏览器将为您呈现从该表单发回的内容,但ajax帖子不会更改浏览器显示的内容所有
提交HTML表单可以通过Javascript或本机用户操作(没有任何Javascript)完成。但是,为了让浏览器为您处理结果,它必须是提交表单的浏览器,而不是发送表单的ajax调用。如果Ajax调用发送表单(如您显示的代码中那样),那么结果将返回到您的Javascript,并且由您的Javascript决定如何处理该结果(将其插入页面,等...)。