我怎样才能发送多个XMLHttpRequests
我有一个关于节点js和expression框架的问题。
我想在我的服务器代码中执行以下操作:
- 用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
收到Cant send headers after they are sent
的消息。 我阅读了快速文档,发现在发送请求之后尝试修改标题时会发生这种情况。 我还读了一些有关中间件和路由的内容。 但是这个文档对我来说不是很清楚。
有人能指出什么是理想的做法吗? 我可以使用具有相关信息的链接。 我是新来expression和节点js。
编辑:更多细节:
-
该用户位于我的网站foo /的着陆页上。
-
他input一些细节,根据这个细节我做了第一个xmlhttprequest。
- 我处理来自API 1的数据,使用已处理的数据作为API 2的input,这又是一个xmlhttprequest。
如果你想发送两个不同的XHR
请求,你需要为它定义两个不同的路由:
app.get('/XHR1', routes.xhr1); app.get('/XHR2', routes.xhr2);
你得到的原因Can't send headers after they are sent
是因为你正在响应客户端(可能是通过res.send(200)
, 完整列表等 ),然后尝试再次响应客户端。 每次通话只能回复一次。