Javascript 在节点服务器中发出post请求后更改浏览器url

Javascript 在节点服务器中发出post请求后更改浏览器url,javascript,node.js,xmlhttprequest,Javascript,Node.js,Xmlhttprequest,我正在实现一个注册页面,在该页面中,我希望在提交表单并发送post请求后更改浏览器url。实际上,我希望服务器在收到post请求后提供另一个静态文件。我该怎么做 下面是我在客户端使用vanilla js的xhr请求: function signup(e) { var data = { name: _elements.fullname.value, username: _elements.username.value,

我正在实现一个注册页面,在该页面中,我希望在提交表单并发送post请求后更改浏览器url。实际上,我希望服务器在收到post请求后提供另一个静态文件。我该怎么做

下面是我在客户端使用vanilla js的xhr请求:

function signup(e) {
        var data = {
            name: _elements.fullname.value,
            username: _elements.username.value,
            password: _elements.password.value
        };

        data = JSON.stringify(data);

        var xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function() {
            if(xhr.readyState === 4 && xhr.status === 200) alert('Signed in successfully!');
        }
        xhr.open('POST', 'signup', true);
        xhr.setRequestHeader('Content-Type', 'text/plain')
        xhr.send(data);
    }
这是我的server.js文件:

const http = require('http');
const requestHandler = require('./req-handler').requestHandler;

http.createServer(requestHandler).listen(8080);

req-handler.js:

if (req.method === 'GET') {
        switch (req.url) {
            case '/':
                routeHandler = rootHandler;
                break;
        }
    } else if (req.method === 'POST') {
        switch (req.url) {
            case '/signup':
                routeHandler = signupHandler;
                break;
        }
    }

    if (!routeHandler) {
        routeHandler = staticFileHandler;
    }

    routeHandler(req, res);


    function rootHandler(req, res) {
        req.url = 'signup.html';
        staticFileHandler(req, res);
    }

    function signupHandler(req, res) {
        req.url = 'index.html';
        var jsonData = '';

        req.on('data', data => {
            jsonData += data.toString('utf-8')
        });

        req.on('end', () => {

            staticFileHandler(req, res);
        });
    }


    function staticFileHandler(req, res) {
        console.log(req.url)
        fs.readFile('client/' + req.url, function (err, data) {
            if (err) {
                res.writeHead(500);
                res.write(err.name);
                res.end();
            }
            console.log(data)
            res.writeHead(200);
            res.write(data);
            res.end();
        });
    }

所有静态文件.html和.css都位于/client文件夹中。顺便说一下,我不想使用任何库/框架。

您可以使用vanilla js导航到新页面

xhr.onreadystatechange = function() {
    if(xhr.readyState === 4 && xhr.status === 200) {
        alert('Signed in successfully!');
        document.location.href = {Your_new_URL}
    }
}
如果文件路径可能不同,则始终可以在服务器上的JSON响应中指定它,并在XHR成功回调中使用它