Javascript mysql请求后的节点JS重定向
我正在尝试用NodeJS和MySQL做一个注册页面,除了我不能在另一个页面上重定向用户外,所有的功能都正常。它没有考虑我表单中的“操作”,我不能在我的server.js中使用window.location,当我尝试时:Javascript mysql请求后的节点JS重定向,javascript,jquery,mysql,html,node.js,Javascript,Jquery,Mysql,Html,Node.js,我正在尝试用NodeJS和MySQL做一个注册页面,除了我不能在另一个页面上重定向用户外,所有的功能都正常。它没有考虑我表单中的“操作”,我不能在我的server.js中使用window.location,当我尝试时: response.writeHead(301, {Location: 'index.html'} ); 我犯了一个错误 这是我的表格: <form method="post" action="index.html" id="registerForm">
response.writeHead(301,
{Location: 'index.html'}
);
我犯了一个错误
这是我的表格:
<form method="post" action="index.html" id="registerForm">
<label for="username">Username</label>
<input type="text" name="username" placeholder="Username" id="username" /><br/>
<label for="password">Password</label>
<input type="password" name="password" placeholder="Password" id="password" /><br/>
<label for="password_bis">Confirmation</label>
<input type="password" name="password_bis" placeholder="Password" id="password_bis" /></span><br/>
<label for="language">Language</label>
<select name="language" id="language">
<option value="fr">Français</option>
<option value="en">English</option>
</select>
<input type="submit" value="Submit" />
</form>
这是我的服务器:
var http = require('http');
var queryString = require('querystring');
var server = http.createServer( function(req, res) {
if (req.method == 'POST') {
var requestBody = '';
req.on('data', function (data) {
requestBody += data;
});
req.on('end', function () {
var postData = queryString.parse(requestBody);
if(postData.username && postData.password && postData.language)
{
var post = {username: postData.username, password: postData.password, language: postData.language};
var query = connection.query('INSERT INTO user SET ?', post, function(err, result) {
if (err) throw err;
else {
res.writeHead(200, {'Content-Type': 'text/plain', 'Access-Control-Allow-Origin': '*'});
res.end();
}
});
}
});
}
}).listen(1337);
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database: 'test'
});
connection.connect(function(error) {
if (error) {
return console.log('CONNECTION error: ' + error);
}
});
谢谢这部分代码:
$("#registerForm").submit(function (e) {
e.preventDefault();
$.post("http://localhost:1337", { username: $("#username").val(), password: $("#password").val(), language: $("#language").val() } );
});
应该删除
它导致您的请求通过AJAX发送到服务器,并且从那里您无法重定向页面。如果您删除了代码,它应该可以正常工作
如果必须使用javascript(预处理表单或其他内容),可以通过response.send
发送要重定向到的位置,然后在post处理程序中使用window.location
您的客户端代码应该如下所示:
$("#registerForm").submit(function (e) {
e.preventDefault();
$.post("http://localhost:1337", {
username: $("#username").val(),
password: $("#password").val(),
language: $("#language").val() } ).success(function(data){
window.location = data;
});
});
});
res.end('index.html');
相应的服务器端代码如下所示:
$("#registerForm").submit(function (e) {
e.preventDefault();
$.post("http://localhost:1337", {
username: $("#username").val(),
password: $("#password").val(),
language: $("#language").val() } ).success(function(data){
window.location = data;
});
});
});
res.end('index.html');
您正在通过AJAX提交表单,但是您希望页面重定向吗?您需要使用常规请求。不要通过javascript发送,这会使它变得不必要的复杂。此外,您可能需要查看
Express.js
web框架。它使处理POST请求变得更加容易代码>正在阻止其重定向/提交,window.location
有什么问题?@Greg不幸的是,这是一个我不能使用任何框架或库的项目。你试过302
header吗?@Spokey我不能在server.js节点中使用window.location.js不知道什么是window.location.js。它使用这个:res.end(JSON.stringify({location:'index.html');但我将重定向到:“undefined”而不是“index.html”@user3198601$.parseJSON(data.location)
@user3198601好吧,我只是在考虑websockets:D中的.send()
,它将它放入一个额外的数据中,这是另一个Express ism,我编辑了代码,使其在不使用JSON的情况下工作。