Javascript Node.js:对象在响应对象中转换为未定义
我有一个简单的函数,定义如下Javascript Node.js:对象在响应对象中转换为未定义,javascript,node.js,Javascript,Node.js,我有一个简单的函数,定义如下 function upload(response, postData) { console.log("Received: " + postData); response.writeHead(200,{"Content-Type":"text/plain"}); response.write("You've sent text: " + querystring.parse(postData).text); response.end();
function upload(response, postData) {
console.log("Received: " + postData);
response.writeHead(200,{"Content-Type":"text/plain"});
response.write("You've sent text: " + querystring.parse(postData).text);
response.end();
}
当我将数据登录到控制台时,它显示正确,但写入响应对象时显示为“未定义”。为什么会发生这种情况?我的密码有错误吗
全部代码
route.js
requestHandler.js
代码在使用和不使用
postData
时执行两次。谢谢李纳斯·盖尔。在发布之前,我应该更清楚地了解代码。我认为这是一种打字错误
querystring.parse(postData).undefinedtext
用于requestHandler.js中的上载函数
我正在完成同一个教程,也被困在这里。这显然有点晚了,但我有和你一样的确切错误,但我没有执行两次路由。我的错误是postData变量未定义,因此
undefinedtext=sometext+querttest
这个问题很容易解决,我初始化了你的postData=“”。希望这有助于任何未来的游客被困在这里 您可以发布显示函数调用及其参数的代码吗?直觉告诉我们,您的post数据中没有项目
text
。您可以在代码中添加console.log(querystring.parse(postData))
,并在此处显示结果吗?console.log可以很好地打印它。您可以看到上面的全部代码。我有一个UpdateEdit,看起来您将两次路由每个请求,一次带postData,一次不带postData
。要添加更多细节,可以通过从server.js中删除第二个路由请求来修复此问题:路由(句柄、路径名、响应)代码>(这已由“结束”事件处理)。
var http = require("http");
var url = require("url");
function start(route,handle) {
function onRequest(request,response) {
var postData = "";
var pathname = url.parse(request.url).pathname;
console.log("Request received for " + pathname + " received.");
request.setEncoding("utf8");
request.addListener("data", function(postDataChunk) {
postData += postDataChunk;
console.log("Received POST data chunk '" + postDataChunk + "'.");
});
request.addListener("end", function() {
console.log(postData);
route(handle, pathname, response, postData);
});
route(handle,pathname,response);
}
http.createServer(onRequest).listen(8888);
console.log("Server has started...");
}
exports.start = start;
querystring.parse(postData).undefinedtext
undefinedtext=sometext+querttest