gpt4 book ai didi

javascript - NodeJS > req.query 返回不正确的数据

转载 作者:行者123 更新时间:2023-11-29 22:07:58 24 4
gpt4 key购买 nike

我正在像这样(从客户端)向 NodeJS 服务器发送 JSON:

$.ajax({

type: "POST",
dataType: "jsonp",
url: "www.xyz.com/save",
data: {

designation: "Software Developer",

skills: [

"",
"ASP.NET",
"PHP",
"",
"",
"",
"NodeJS",
"",
""

]

}

});

在接收端(即 NodeJS 服务器),我按如下方式打印 JSON(使用 console.log):

save = module.exports = {};

save.setup = function( app ) {

app.get( '/save', function(req, res) {

console.log(req.query);

});

}

问题是它打印了以下内容:

{

designation: "Software Developer",

skills: [

"ASP.NET",
"PHP",
"NodeJS",

]

}

即它在技能数组缺少空字符串值(正如我从 req.query 中得到的)。

我还检查了网络面板(在开发人员工具中)。它还显示正确的 JSON。

有谁知道可能出了什么问题吗?

最佳答案

Connect(Express 构建于其上)使用第三方 qs模块而不是内置的 querystring解析 URL 查询字符串的模块。

您的数据被 jQuery 序列化为以下查询字符串:

designation=Software+Developer&skills%5B%5D=&skills%5B%5D=ASP.NET&skills%5B%5D=PHP&skills%5B%5D=&skills%5B%5D=&skills%5B%5D=&skills%5B%5D=NodeJS&skills%5B%5D=&skills%5B%5D=

(这是多个名为 skills[] 的参数,其中包括空格。)

如果我将该字符串提供给 querystring.parse() —内置解析器—我得到了您期望的结果:

{ designation: 'Software Developer',
'skills[]':
[ '',
'ASP.NET',
'PHP',
'',
'',
'',
'NodeJS',
'',
'' ] }

如果我将字符串提供给 qs.parse,我会得到与您在应用中看到的相同的结果。

This behavior is an open qs issue ,但一年半多来仍未解决。您可以向 TJ 提出问题或尝试自己解决问题。

与此同时,您可以使用 querystring 而不是 qs 来解决该错误。我只想使用 url.parse重新解析原始 URL。

var url = require('url');

app.get('/', function(req, res) {
console.log(url.parse(req.originalUrl, true).query);
});

关于javascript - NodeJS > req.query 返回不正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19838216/

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