JavaScript JSON对象解析不正确
各位, 我一直在为这个问题绞尽脑汁。本质上,我有一个表单,它提交一个字符串值以通过DynamoDB RangeKey进行搜索 如果表单包含“newy”,则函数似乎中断。如果我坚持“新的%20Y”,事情会按预期进行。如果使用空格,我会看到以下错误:JavaScript JSON对象解析不正确,javascript,node.js,amazon-dynamodb,Javascript,Node.js,Amazon Dynamodb,各位, 我一直在为这个问题绞尽脑汁。本质上,我有一个表单,它提交一个字符串值以通过DynamoDB RangeKey进行搜索 如果表单包含“newy”,则函数似乎中断。如果我坚持“新的%20Y”,事情会按预期进行。如果使用空格,我会看到以下错误: error: socket hang up 在这段代码的某个地方,它不能正确地传递空格。令人困惑的是,“有些”空间起作用,有些不起作用 exports.nameSearch = function (req, res) { getJSON = fu
error: socket hang up
在这段代码的某个地方,它不能正确地传递空格。令人困惑的是,“有些”空间起作用,有些不起作用
exports.nameSearch = function (req, res) {
getJSON = function(options, onResult){
//console.log("rest::getJSON");
var prot = options.port == 8443 ? https : http;
var req = prot.request(options, function(res)
{
var output = '';
console.log(options.host + ':' + res.statusCode);
res.setEncoding('utf8');
res.on('data', function (chunk) {
output += chunk;
});
res.on('end', function() {
var obj = JSON.parse(output);
onResult(res.statusCode, obj);
});
});
req.on('error', function(err) {
res.send('error: ' + err.message);
});
req.end();
};
if (!req.session.username) {
res.redirect('/login');
} else {
options = {
host: 'api.me.com',
port: 8443,
path: '/usr/name/'+req.body.name,
method: 'GET',
rejectUnauthorized: false,
requestCert: true,
agent: false,
headers: {
'Content-Type': 'application/json'
}
};//options
getJSON(options,function(statusCode, result) {
console.log("onResult: (" + statusCode + ")" + JSON.stringify(result));
// Check if we found anything
status = JSON.stringify(result.Count)
if (status == 'undefined') {
console.log ('Nothing Found by the name,', req.body.name)
var count = '0'
res.render('user/nameSearch', { title: 'title', count: count, req: req });
} else {
results = JSON.stringify(result)
console.log ("results 1 ok , ", results)
results = JSON.parse(results)
console.log ("results 2 ok , ", results)
res.render('base/nameSearch', { title: 'title', baseResults: results, req: req })
}
});// JSON
} // else
})
如果表单包含“newy”,则函数似乎中断。如果我坚持“新的%20Y”,事情会按预期进行
这意味着您正在某个地方对输入进行url解码,因此您需要弄清楚是哪个中间件执行此操作。可能是内置的
unescape
功能。但就目前情况而言,您的问题过于笼统,我无法缩小URL编码输入的范围。我是否应该尝试对req.body.name进行uri编码?@Cmag首先,我会确保您了解您正在使用的所有函数的输入和输出。但是,作为一个黑客,我相信预编码是可行的。我上传了一个更新的问题:根据我目前所看到的,我发布了一个不完整的答案。但是请缩小你的代码范围。这对我来说太多了,无法通过阅读来调试。看见