在阅读了最近2.5个小时的主题后,我无法确定如何解决:将标头发送给客户端后无法设置标头,但我认为这与底部的以下代码有关,尤其是代码以粗体显示。
任何帮助或帮助将不胜感激。
FOR i = 1 TO 5
PRINT "Enter Investor-" + STR$(i) + "'s Principal";: INPUT p(i)
PRINT "Enter Investor-" + STR$(i) + "'s Time";: INPUT t(i)
NEXT
PRINT "Amounts:"
PRINT "Accrued", "Principal", "Time"
PRINT "-------", "---------", "----"
r = .12
FOR i = 1 TO 5
rt(i) = 1 + (r * t(i))
a(i) = (p(i) * rt(i))
PRINT a(i), p(i), t(i)
NEXT
END
答案 0 :(得分:0)
您的代码存在的问题是您要在迭代循环中调用res.json()。
自
以来,您只能拨打一次电话res.json()在后台实现了res.write(),res.setHeaders()和res.end(), 这意味着一旦调用res.end(),它将终止请求,并且无法再发送了。
最好使用
res.setHeader('Content-Type', 'application/json'); // before all the iterations
res.send(JSON.stringify({key:"value"})); // replace this for your res.json()
res.end() // after iterations
答案 1 :(得分:0)
正如@kiran Mathew回答的那样,在for循环内一次又一次调用res.json(),这就是为什么发生“发送响应后无法设置标头”的原因。
您可以使用结果数组' trackingNumbers '存储所有tracking_number,然后退出循环并发送单个响应。
app.post("/api/tracking/retrieve", (req, res) => {
const trackingCodes = ["EZ6000000006", "EZ4000000004"];
const carrierCodes = ["UPS", "UPS"];
const trackingNumbers = [];
trackingCodes.forEach(trackingCode => {
carrierCodes.forEach(carrierCode => {
const tracker = new api.Tracker({
tracking_code: trackingCode,
carrier: carrierCode
});
tracker
.save()
.then(function(data) {
table = "tracking_table";
col = ["user_id", "tracking_number"];
val = [user_id, tracker.tracking_code];
// !ISSUE: :: ::: :::: ::::: :::::: ::::::: //**
main.create(table, col, val, function(data) {
// res.json({
// id: "",
// user_id: user_id,
// tracking_number: data.tracking_code
// });
trackingNumbers.push(data.tracking_code);
});
})
.catch(error => {
// handle errors
console.log("There has been an error with your submission.");
});
res.json({
id: "",
user_id: user_id,
tracking_number: trackingNumbers
});
});
});
});