代码之家  ›  专栏  ›  技术社区  ›  Mattia Surricchio

如何使用从客户端传递的参数

  •  0
  • Mattia Surricchio  · 技术社区  · 6 年前

    我正在使用jquery从客户机执行一个简单的请求,并传递一个参数,该参数将用于检索与服务器上的特定id相关联的数据(数据在json文件中)。

    请求客户端:

    $(document).ready(function(){
        console.log("Doctor id: "+URL.id); //LOG THE ID OF THE DOCTOR FROM THE PAGE URL
        $.get( '/doctorID',{ id: URL.id }, function(data) {
    
            console.log(typeof data)
            JSON.parse(data).map(addElement); // ignore add element function  
            });    
    });
    
    
    var URL = function () {
    // This function is anonymous, is executed immediately and 
    // the return value is assigned to QueryString!
    var query_string = {};
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i=0;i<vars.length;i++) {
      var pair = vars[i].split("=");
        // If first entry with this name
    if (typeof query_string[pair[0]] === "undefined") {
      query_string[pair[0]] = decodeURIComponent(pair[1]);
        // If second entry with this name
    } else if (typeof query_string[pair[0]] === "string") {
      var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
      query_string[pair[0]] = arr;
        // If third or later entry with this name
    } else {
      query_string[pair[0]].push(decodeURIComponent(pair[1]));
    }
    } 
    return query_string;
    }();
    

    url函数从url获取我需要的id,如下所示 http://localhost:5000/pages/personaleGenerico.html?id=4

    我在get请求中传递id参数,然后在服务器端使用node.js:

    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));
    app.get('/doctorID', function(req, res) {
      id = req.param.id;
      console.log(id);
    
    
    });
    

    我都试过了 req.param.id req.body.id ,但我一直得到一个未定义的值。 如何获得所需的正确值?我遗漏了什么吗?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Gabriel Carneiro    6 年前

    尝试 req.query.id .

    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));
    app.get('/doctorID', function(req, res) {
      id = req.query.id;
      console.log(id);
    });
    

    将get方法更改为:

    $.get( `/doctorID?id=${URL.id}`, function(data) { //...
    
        2
  •  1
  •   Joe Jazdzewski    6 年前

    看起来您的目标是查询,但使用的是param。要将代码更改为使用param,必须更改以下代码

    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: true }));
    app.get('/doctorID', function(req, res) {
      id = req.param.id;
      console.log(id);
    });
    

    为了使用 req.param.id

    你的 app.get('/doctorID) 必须是 app.get('/doctorID/:id')

    你的目标是 '/doctorId/' + Url.id

    param documentation

    query documentation