【问题标题】:How can I send multiple XMLHttpRequests如何发送多个 XMLHttpRequests
【发布时间】:2014-05-18 03:39:36
【问题描述】:

我有一个关于 node js 和 express 框架的问题。

我想在我的服务器代码中执行以下操作:

  • 使用 xmlhttprequest 1 调用远程服务器
  • 处理响应
  • 使用 xmlhttprequest 2 调用远程服务器

这是我的服务器代码的简化版本:

app.js:

var express = require('express');
var routes = require('./routes');
var about = require('./routes/about');
var user = require('./routes/user');
var contact = require('./routes/contact')
var http = require('http');
var path = require('path');
var cors = require('cors');
var app = express();
....
app.get('/', routes.index);   //<---currently this is handled in index.js, in function index.

index.js:

exports.index = function(req, res){
 //xmlhttprequest 1    // <--- send xhr 1 
 //process data
 //xmlhttprequest 2    // <--- send xhr 2
};

我收到消息Cant send headers after they are sent。我阅读了 express 文档并了解到当我们在发送请求后尝试修改标头时会发生这种情况。我还阅读了一些关于中间件和路由的内容。但是我不清楚文档。

有人能指出理想的方法是什么吗? 我可以使用具有相关信息的链接。我是表达和节点js的新手。

编辑: 更多详情:

  • 用户在我的网站 foo/ 的登录页面上。

  • 他输入了一些细节,基于这些细节我做了第一个 xmlhttp请求。

  • 我处理来自 API 1 的数据,使用处理后的数据作为输入 API 2,同样是一个 xmlhttprequest。

【问题讨论】:

    标签: javascript node.js express xmlhttprequest


    【解决方案1】:

    如果你想发送两个不同的XHR 请求,你需要为它定义两个不同的路由:

    app.get('/XHR1', routes.xhr1);
    app.get('/XHR2', routes.xhr2);
    

    您收到Can't send headers after they are sent 的原因是因为您正在响应客户端(可能通过res.send(200)full list 之类的方式),然后尝试再次响应客户端 .每次通话只能回复一次。

    【讨论】:

    • 但是,如果我希望将两个 xhr 作为同一个 URL 的一部分发送,而不将用户路由到服务器上的两个不同 URL,该怎么办?例如:app.get('/', routes.xhr1and2)
    • 您需要提供更多代码 - 我不太明白您在问什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多