【发布时间】:2015-03-13 01:17:14
【问题描述】:
我正在使用 Node.js 并将 express 作为我的主要框架。
我有一个包含以下代码的登录网页。
<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 类型,其 action 属性针对登录 url,由于我只能发送一个响应,我将发送一个重定向并控制路由处理.但是由于客户端不会像以前那样拥有其他成员数据,因此他将通过单独的路由发送另一个请求以获取登录成员的数据,例如会话和成员的密钥。
看了很多有名的网站,html代码确实实现了我朋友描述的,他想通过标准程序做网站。他认为我通过 onclick 触发器处理请求的方式是一种解决方法。我明白了,我对web开发不熟悉,我负责服务器。但这不是使工作量 x2 吗?我的意思是,如果客户端一旦获得数据就可以处理发布操作,那不是一种解决方法,而是一种处理请求的正常方式吗?
【问题讨论】:
标签: javascript html node.js forms