【问题标题】:Javascript make a post request and receive multiple responsesJavascript 发出一个 post 请求并接收多个响应
【发布时间】:2015-05-09 12:32:02
【问题描述】:

如何从服务器接收多个响应? 服务器向客户端发送 3 个不同的响应。不幸的是,我的代码只捕获了第一个(我认为)。

客户端(html页面)发出一个post请求,服务器3次不同时间回复客户端。如何捕捉所有 3 个响应?

这是带有 javascript 代码的 index.html 页面:

<script type="text/JavaScript">
    console.log('begin');
    var http = new XMLHttpRequest();



    var data={
        'query'        : "test"
    }


    data=JSON.stringify(data);


    http.open("POST", "http://localhost:8080", true);

    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");


    http.onreadystatechange = function() {
        console.log('onreadystatechange');
        if (http.readyState == 4 && http.status == 200) {
            console.log(http.responseText);
        }
        else {
            console.log('readyState=' + http.readyState + ', status: ' + http.status);
        }
    }

    console.log('sending...')
    http.send(data);
    console.log('end');

</script>

在 NODE JS 中,我可以通过这种方式捕获所有响应...有类似的吗?

var options = {
    host: 'localhost',
    port: 8080,
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Content-Length': data.length
    }
};

var req = http.request(options, function(res) {
    res.setEncoding('utf8');
    res.on('data', function (chunk) {
        console.log("body: " + chunk);
    });
});

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    您需要为每个请求使用 XMLHttpRequest 的新实例。

    【讨论】:

    • 客户端(html页面)发出一个post请求,服务器3次不同时间回复客户端。我怎样才能捕捉到所有 3 个响应?
    • 我不确定我是否理解。服务器只能响应一次请求。 1 个 HTTP 请求映射到 1 个响应。对于 2 个响应,您需要 2 个请求,对于 3 个响应,您需要 3 个等等。
    • 服务器以分块的消息回复
    • 不管它是如何打包的,HTTP 不涉及对单个请求的超过 1 个回复。如果来自服务器的回复分为两部分,则需要两个请求,每个部分一个。
    • 谢谢,但为什么我可以使用节点 js 代码捕获所有 3 个响应?
    猜你喜欢
    • 2015-10-15
    • 2014-07-13
    • 2011-03-03
    • 2015-12-26
    • 2021-03-02
    • 2017-10-12
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    相关资源
    最近更新 更多