firebase.auth().onAuthStateChanged(function(user) {
if (user) {
console.log("Signed in");
return user.getIdToken(true).then(function(idToken) {
// Send token to your backend via HTTPS
// ...
console.log("Token = " + idToken);
var bearer = "Bearer " + idToken;
var xhr = new XMLHttpRequest();
xhr.open("GET", "dashboard");
xhr.setRequestHeader("Authorization", bearer);
return xhr.send();
}).catch(function(error) {
// Handle error
console.log(error);
});
}
else{
console.log("User signed out");
}
});
我正在做以下请求。在我的服务器中,我收到日志,说它已收到请求,并且已将其识别为经过身份验证的用户,依此类推。事实上,为了测试,我将它发送到一个简单的端点,如/hello
,我只是在我的快递应用程序中res.render("Hello World!")
,但即使这样,页面上也没有任何反应。为什么浏览器不刷新页面来表示来自端点的响应?
答案 0 :(得分:0)
为什么浏览器不刷新页面来表示来自端点的响应?
因为Ajax的整个点是响应传递给JavaScript所以你可以用它做你喜欢的事情而不是加载一个新的页面。
您可以使用以下方式访问数据:
xhr.addEventListener("load", function () {
console.log(this.responseText);
});
答案 1 :(得分:0)
您现在正在构建的内容本质上是一个与JS通信的Web应用程序。既然你现在正在做逻辑客户端而不是服务器端,而不是在登录后使用Express重定向到另一条路由,你必须做客户端路由。
这意味着在您从API收到成功的响应(200)后,您必须将客户端指向所需的路由。所以你会做类似的事情:
_
然而,您似乎意外地做了客户端逻辑。因此,我建议您停止使用XMLHttpRequest,并像在其他帖子中一样使用JOIN
并继续努力尝试使其正常工作。通过这种方式,您可以继续构建服务器呈现的ExpressJS应用程序。