如果我在我的控制台中转到localhost:8080 /?referal = referalID我得到了referall id以及一行未定义的值,我该如何删除那个未定义的行?
var http = require('http');
var url = require('url');
http.createServer(function(req,res){
res.writeHead(200, {'Content-Type':'text/html'});
var adr = req.url;
var q = url.parse(adr, true);
var qdata = q.query;
res.end(console.log(qdata.referal));
}).listen(8080);
我的问题是我需要在这里改变什么?
答案 0 :(得分:1)
我不确定你在那里做什么,但这应该是正确的语法:
var http = require('http');
var url = require('url');
http.createServer(function(req,res) {
var adr;
var q;
var qdata;
req.on('data', function() {
// Data handler
}).on('end', function() {
res.writeHead(200, {'Content-Type':'text/html'});
adr = req.url;
q = url.parse(adr, true);
qdata = q.query;
console.log(qdata);
res.end(qdata.referal);
});
}).listen(8080);
答案 1 :(得分:1)
您无法在回复中发送console.log
来电。
你应该将两者分开:
console.log(qdata.referal); // This will print in the console, server side
res.end(qdata.referal) // This will be echoed back to the client, in the browser
答案 2 :(得分:0)
您可能正在讨论的未定义行是返回给客户端的那个,这是因为控制台日志不会返回任何内容 正如您在源代码here
中看到的那样覆盖控制台日志记录以返回参数
function example(value) {
if (value === /^[0-9]{1,2}$/gi.test(value) || /^[a-z]{1,2}$/gi.test(value) ) {
// do stuff...
} else {
// do other stuff...
}
}
example('AA'); // returns 'true'
example('99'); // returns 'false', expected 'true'
example('Word'); // returns 'false'
虽然这可能会节省几个操作码并将另一个对象推入堆栈,但您应该谨慎使用它,或者记住一个可以帮助您解决与未来相关的错误的祈祷。
下次请附上日志或截图
#过编程
答案 3 :(得分:0)
您看到undefined
的原因是因为您的浏览器也在寻找favicon.ico
,因此您的功能会被点击两次。如果你这样做:
var http = require('http');
var url = require('url');
http.createServer(function(req,res){
res.writeHead(200, {'Content-Type':'text/html'});
var adr = req.url;
console.log(adr);
var q = url.parse(adr, true);
var qdata = q.query;
res.end(qdata.referal);
}).listen(8080);
你会得到:
/?转诊= referalID
/favicon.ico
url.parse('/favicon.ico', true);
的结果是undefined
。
另外提及res.end(console.log(qdata.referal));
的其他人不会向浏览器/客户端返回任何内容,因为console.log()
不会返回任何内容。