我正在使用Node.js并将表达作为我的主要框架。
我有一个包含以下代码的登录网页。
<script>
function sendResponse(){
var data = new FormData();
var login = document.getElementById("login").value;
var password = document.getElementById("password").value;
data.append('login', login);
data.append('password', password);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://myURL/login', true);
xhr.onload = function () {
// do something to response
var result = JSON.parse(this.responseText);
if(result["result"] == "fail"){
alert("No Account Found. Please Register First.");
window.location.replace("http://myURL/register");
}
else{
window.location.replace("http://myURL/mainpage");
}
};
xhr.send(data);
}
</script>
<h1>Login Portal</h1>
<hr />
<form method="post">
<table>
<tr>
<td><label>Username or Email:</label></td>
<td><input id="login" type="text" name="login" /></td>
</tr>
<tr>
<td><label>Password:</label></td>
<td><input id="password" type="password" name="password" /></td>
</tr>
</table>
<button type="button" onclick="sendResponse()">Login</button>
</form>
Node.js不能为一个请求发送两个响应。
html不是由普通的FORM-SUBMIT请求发送的,而是有一个单独的javascript函数,它创建一个新的httprequest实例并从表单中收集信息并将其发送到服务器,获取响应并从那里做进一步的操作(注册或主页)。
我的朋友要做的是使这个普通的FORM-SUBMIT类型具有针对登录网址的动作属性,并且因为我只能发送一个响应,所以我会发送重定向并控制路由处理。但后来由于客户端没有其他成员数据,比如之前他会通过单独的路由发送另一个请求来获取登录成员的数据,例如会话和成员的密钥。
当我查看许多着名网站时,html代码确实实现了我朋友描述的内容,并且他希望通过标准程序制作网站。他认为我通过onclick触发器处理请求的方式是一种解决方法。我明白了,而且我不熟悉网络开发,我负责服务器。但这不会导致工作负载x2?我的意思是,如果客户端在获得数据后可以处理后期操作,那么这不是一种解决方法,而是处理请求的正常方式吗?
答案 0 :(得分:0)
Node.js无法为一个请求发送两个响应
我不认为任何网络服务器都可以这样做,除非您使用双工连接,例如websocket。
他认为我通过onclick触发器处理请求的方式是一种解决方法。
表单中的那个或submit
事件。它非常通用,并且得到了几乎所有浏览器的支持。