将客户端数据传递到url express路由

时间:2017-03-06 21:09:10

标签: javascript jquery node.js express

我是Node / Express的新手,但我正在将我的jQuery / Bootstrap应用程序转换为带有节点后端的应用程序,用于路由和其他服务器端任务。目前,当用户点击某个链接时,它会将数据传递到我在访问新页面时抓取的网址。像这样:

$("#parking_icon").on("click", function() {
        window.location = "_views/parkingLot.html?37.415912?-121.897520";
    });

然后我在parkingLot.html页面上抓取并使用该数据。像这样:

var urlQuery = window.location.search.substring(1);
var mapLatLon = urlQuery.split("?");
var centerCoords = [parseFloat(mapLatLon[1]), parseFloat(mapLatLon[0])];

既然我正在尝试转换为使用快速路线,我不确定如何实现这一目标。 (我有大约20个类似于上面的按钮,它们都通过不同的坐标)。我知道我可以通过为每个人创建一个类似于此的单独路线来实现这一目标:

    app.get('/parkingLot?37.415912?-121.897520', function(req, res) {
    res.render('parkingLot', {
        title: 'testing ParkingLotPage'
        });
    });

但似乎必须有一种更简单的方法。我根本不应该使用app.get()吗?我确信这是一个菜鸟问题,所以请原谅我,因为我刚开始使用Node / Express。我正在使用ejs模板引擎,如果这有任何区别。

1 个答案:

答案 0 :(得分:1)

稍微抽象一点,如果你有一个带有查询字符串的/parkinglot路由,那么我们可以直接在路由上使用该查询字符串。

app.get('/parkinglot', (req, res) => {
  let lat = req.query.lat;
  let long = req.query.long;

  res.render('parkinglot', {
    title: '',
    data: {
      lat: lat,
      long: long
    }
  });
});

确保使用以key=value开头的?语法正确构建查询字符串,并将所有键值对分隔为&

$("#parking_icon").on("click", function() {
    window.location = "_views/parkingLot?lat=37.415912&long=-121.897520";
});
相关问题