gpt4 book ai didi

javascript - 无法在node.js中发出ajax请求

转载 作者:行者123 更新时间:2023-12-03 06:53:42 25 4
gpt4 key购买 nike

我正在运行一个nodejs服务器来运行我的网站,并且我希望后端服务器调用外部服务器上的api。我尝试了以下基本且简单的方法:

router.post('/calculate', function (req, res) {

var data = /*some json object*/

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "some.server/pricing");
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify(data));
xmlhttp.onreadystatechange = function() {


if(xmlhttp.status == 200)
{
var str = xmlhttp.responseText.toString().trim()
dd = JSON.parse(str);
res.send(dd);
//res.end();

}


};

});

当我运行这个时,我得到:

 _http_outgoing.js:346
throw new Error('Can\'t set headers after they are sent.');
^

Error: Can't set headers after they are sent.

问题似乎出在 res.send(dd);

编辑:

经过进一步调查,似乎 xmlhttp.onreadystatechange 发生了两次,状态为 200,并且 res.send 被调用了两次。我创建了一个临时 hack 来使用 bool 标志来修复此问题,rpoper nodejs 修复此问题的方法是什么?

在nodejs中进行此类调用最直接的方法是什么?我希望在服务器端完成此操作。我没有使用像express这样的任何库。谢谢

最佳答案

使用 request 即可轻松完成包

var request = require('request');
request({
url: 'some.server/pricing',
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
form: data
}, function (err, res, body) {
if (err) res.send(err)
else res.send(body)
});

关于javascript - 无法在node.js中发出ajax请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37381441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com