【发布时间】:2021-02-04 02:12:57
【问题描述】:
我很好奇从键值是字符串的对象中获取值的正确方法。 来自客户端的数据发布并从 express.Js 后端的 req.body 接收。
从客户端。例如
var waypoints = {lat:15,lng:16};
$.ajax({
type:"POST",
url:'someurl',
data: { routeId:someId,origin: origin, waypoints::waypoints, destination: finaldestination.lat+','+finaldestination.lng,}
});
console.log 来自从 express.js 后端接收的数据。例如
{
routeId:'1234',
origin:'1.123,2.234',
'waypoints[lat]':'15',
'waypoints[lng]':'16',
destination:'3.123,3.234,
}
console.log(req.body.waypoints); //未定义
我尝试将waypoint 从客户端更改为字符串。
例如。
var waypoints '';
waypoints += '15,16';
此方法效果很好,从 express.js 后端中的req.body.waypoints 获取值。
{
origin:'1.123,2.234',
waypoint:'15,16',
destination:'3.123,3.234'
}
这里的问题是我究竟如何从'waypoints[lat]' 和'waypoints[lng]' 获得值?
【问题讨论】:
-
使用
data: JSON.stringify({ ... })发送JSON;这样 express 应该将请求正文解析回一个完整的对象。 (我想知道[0]是从哪里来的,因为你的data.waypoint中没有数组。为什么有两个冒号?) -
我猜如果你为数据传递一个对象,jquery会做自己的字符串化,这将使一个数组作为航点[0].....
-
@ChrisG 感谢您的回答,我会在上面尝试您的建议。
[0]是我的错误,原来 waypoint 是一个通过 for 循环添加对象的数组。所以应该是'waypoints[lat]': and 'waypoints[lng]':编辑消除误会。 -
试试
req.body['waypoints[lat]'] -
@ChrisG 我已经尝试过你的建议,这样我可以将多个值与数组一起发送到航路点。例如
waypoints: JSON.stringify(allwaypoints),以后更容易获得一组lan&lng。非常感谢您的帮助:D
标签: javascript node.js express