node.js url搜索/查询部分为空

时间:2017-10-27 02:44:28

标签: javascript html node.js ajax

我正在开发一个从同一台机器运行的网站(客户端+服务器)。 我没有在chrome的开发人员工具中发现任何错误,所以我不知道问题出在哪里。

我尝试将一个字符串从客户端发送到Node后端,但是在执行

 url.parse(request.url, true).query

结果为空。

这是我的客户:

var xhttp = new XMLHttpRequest();

xhttp.open("POST", "http://localhost:8080/newComment", true);
xhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhttp.send("val=" + commentString);

我的评论字串是“嘿那里”

这是我的服务器:

var path = url.parse(request.url).pathname;
else if (path == "/newComment") {

    console.log("query: " + url.parse(request.url, true).body);
    //setNewComment(comment);

    response.writeHead(200, {
        'Content-Type': 'text/plain', 
        'Access-Control-Allow-Origin' : '*',
        'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE'
        }); // enable cors
    response.write("Recieved request");
    response.end();
}

我在网站

file:///C:/Users/.../website.html?name=hey+there

所以我希望我的节点服务器打印出“查询:嘿那里”,而是打印“查询未定义”

1 个答案:

答案 0 :(得分:0)

您正试图访问正文,这是正确的,但网址并不包含正文内容,您应该通过收听数据来积累它。事件:

let body = [];
request.on('data', (chunk) => {
            body.push(chunk);
           }).on('end', () => {
                 body = Buffer.concat(body).toString();
                 // at this point, `body` has the entire request body stored in it as a string
                               });

或使用"表达"和"身体解析器"。

1.转到请求正文部分:https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/