如何发送多个XMLHttpRequests

时间:2014-05-18 03:39:37

标签: javascript node.js express xmlhttprequest

我对节点js和快速框架有疑问。

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

  • 使用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。我阅读了快速文档,并发现当我们在发送请求后尝试修改标头时会发生这种情况。我还读了一些关于中间件和路由的内容。但是文档对我来说并不清楚。

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

编辑: 更多细节:

  • 用户位于我的网站foo /.

  • 的登录页面上
  • 他输入了一些细节,根据我的第一个细节 XMLHttpRequest的。

  • 我处理来自API 1的数据,使用处理过的数据作为输入 API 2,再次是xmlhttprequest。

1 个答案:

答案 0 :(得分: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之类的内容,然后尝试回复客户端再次。每次通话只能回复一次。