gpt4 book ai didi

javascript - 将 JSON 对象发送到客户端时,响应中未定义值 - Node.js

转载 作者:行者123 更新时间:2023-12-03 05:37:41 25 4
gpt4 key购买 nike

我是 Node.jsJavaScript 的新手,我希望在搜索但无法找到解决方案后获得一些帮助。

我正在尝试使用 XMLHttpRequest 方法将一个 JSON 对象发送到包含 2 个元素(经度和纬度)的数组的 Node.js 服务器。这是客户端 JavaScript 代码:

function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var location = [position.coords.latitude, position.coords.longitude];
console.log(location);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:3000/locationdata', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function () {
console.log(this.responseText);
};
xhr.send(location);
});
} else {
console.log('Geolocation is not supported by this browser.');
}
}

服务器接收对象没有任何问题。但是,当我尝试将对象发送回客户端时,我得到一个未定义的值作为响应。这是 Node.js 脚本:

var html = 
fs.readFile(__dirname + '\\public\\index.html', function(err, data) {
if (err){
throw err;
}
htmlFile = data;
});

var server = http.createServer(function (request, response) {

if (request.url == "/") {
response.writeHead(200, {"Content-Type": "text/html"});
response.write(htmlFile);
break;
};

if (request.method == 'POST' && request.url == "/locationdata") {
var postdata = '';
var body = '';
request.on('data', function (data) {
body += data;
});
request.on('end', function() {
var postdata = body;
console.log(postdata);
});
response.writeHead(200, {"Content-Type": "application/json"});
response.write(JSON.stringify(postdata));
}
response.end();
});

server.listen(3000);

我可能在实际请求结束之前发送响应,但我不确定。有任何想法吗?

最佳答案

您在响应之前没有等待请​​求数据,这导致您没有任何响应。改为这样做:

        if (request.method == 'POST' && request.url == "/locationdata") {
var body = '';
request.on('data', function (data) {
body += data;
});
request.on('end', function() {
response.writeHead(200, {"Content-Type": "application/json"});
response.end(body);
});
return;
}

关于javascript - 将 JSON 对象发送到客户端时,响应中未定义值 - Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40661552/

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