NodeJS,Express显示来自AJAX POST的HTML页面响应

时间:2017-10-01 08:39:37

标签: jquery html node.js ajax express

将NodeJS与Express服务器一起使用,当您转到http://localhost:(Serverport)时,NodeJS服务器将使用以下代码发送HTML文件进行响应:

app.get('/', function(req, res){
    res.sendFile(__dirname + '/login.html');
});

现在我正在使用JQuery AJAX POST向服务器发送信息,并根据服务器响应将用户发送到HTML页面“/ index”,或者如果用户凭据不好,则为HTML页面“/ loginno”。问题是AJAX与服务器获取函数响应中的sendfile服务器响应不一致。

我从服务器获取文件并在控制台中输出完整的HTML,但我不知道如何使浏览器实际上以与服务器GET响应相同的方式进入页面。

这是我的Ajax函数,可以从服务器获取HTML页面对象,但浏览器只是不导航到页面。

$.ajax({
        type: "POST",
        url: '/index', //A string containing the URL to which the request is sent.
        timeout: 2000,

        //A plain object or string that is sent to the server with the request.
        data: userdata,

        //The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).
        dataType: 'html',

        success: function(response,status,xhr) {
            //show content
            console.log('Success!' + response+', Status: '+status+', xhr: '+xhr)
        },
        error: function(jqXHR, textStatus, err) {
            //show error message
            alert('text status '+textStatus+', err '+err)
        }
    });

所以问题是,如何告诉JQuery AJAX POST函数导航到从NodeJS服务器响应发送的HTML页面对象?

1 个答案:

答案 0 :(得分:1)

看了这个问题给出的答案...... Calling Response.redirect through Ajax

我能够通过使用url变量构建json响应并在ajax post成功内部来完成我需要的操作,测试服务器是否可以转到新页面并使用window.location.href导航到那里。

在我的NodeJS服务器路由中......

app.post('/index', function(req, res) { 
    //Do some req verification stuff here

    //If req verfiication passes
    var servResp = {};
    servResp.success = true;
    servResp.redirect = true;
    servResp.redirectURL = "http://localhost:3000/index";
    res.send(servResp);  
});

和我的AJAX Post功能......

$.ajax({
    type: "POST",
    url: '/index', //A string containing the URL to which the request is sent.
    timeout: 2000,

    //A plain object or string that is sent to the server with the request.
    data: userdata,

    //The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).
    dataType: 'json',

    success: function(response,status,xhr) {
        //show content
        console.log('Success!' + response+', Status: '+status+', xhr: '+xhr)

            if(response.redirect) {
                window.location = response.redirectURL;
            }

    },
    error: function(jqXHR, textStatus, err) {
        //show error message
        alert('text status '+textStatus+', err '+err)
    }
});

感谢所有帮助过的人!