在mysql请求之后节点JSredirect

我正在尝试做一个与节点JS和MySQL的注册页面,所有工作,除了我不能在另一个页面上redirect用户。 它没有考虑到我的forms“行动”,我不能在我的server.js中使用window.location,当我尝试:

response.writeHead(301, {Location: 'index.html'} ); 

我得到了永久性的错误。

所以,这是我的forms:

 <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> 

这是我的js检索的内容:

  $(document).ready(function(){ $("#registerForm").submit(function (e) { e.preventDefault(); $.post("http://localhost:1337", { username: $("#username").val(), password: $("#password").val(), language: $("#language").val() } ); }); }); 

这是我的服务器:

 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发送到服务器,并从那里你不能redirect页面。 如果删除代码,它应该按预期工作。

如果您必须使用javascript(预处理表单或其他),您可以通过response.send发送一个位置redirect到,然后在后处理程序中使用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');