Node.js从服务器检索URL参数

时间:2017-09-11 06:08:55

标签: node.js express xmlhttprequest

我需要在 XMLHttpRequest.open 中传递一个参数( qItems ):

index.html (app.listen(8080);)

var qItems= 8;
var url= 'ItemsList';
var xhr = new XMLHttpRequest();
var tag = document.getElementById("insertHere");
tag.innerHTML = "Loading...";
xhr.open("GET", url+"?qItems="+qItems, true);
xhr.onreadystatechange = function() {
display(tag, xhr);
}
xhr.send(null);

但是在服务器端( server.js )使用静态URL:

var express = require('express');
var bodyParser = require('body-parser');
var directory = require('serve-index');
var sqlite3 = require('sqlite3').verbose();
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.set('views', __dirname);
app.set('view engine', 'pug');
var db = new sqlite3.Database('./data/DB.sqlite',function(err){
if (err) {
    console.log(err.message);
}
    console.log('Connected to DB!');
});
app.get('/ItemsList', function(req, res) {
    db.all("SELECT rowid, iName, iDescrip FROM Items", function(err, row) {
    if (err !== null) {
      res.status(500).send("An error has occurred: " + err);
  } else {
    res.render('ItemsList.pug', {
   items: row
       }, function(err, html) {
            res.status(200).send(html)
     });
  }
});
});

我尝试( server.js ):

app.get('/ItemsList?qItems='+qItems, function(req, res) {...}

但我收到错误: qItems undefined (来自node.js)

有没有办法从服务器端获取查询参数?

1 个答案:

答案 0 :(得分:1)

您不需要使用查询参数ItemsList/qItems=xxx为url实现不同的处理程序,/ItemsLists中的req.query GET处理程序可以使用查询参数。

app.get('/ItemsList', function(req, res) {
  // You can access qItems from query params
  var qItems = req.query.qItems
  ...
}