【问题标题】:Pass query as parameter to express将查询作为参数传递以表示
【发布时间】:2021-08-12 19:53:30
【问题描述】:

我目前有一个带有表格元素的ejs 文件,其中每一行都可以点击,如下所示: <tr onclick="myFunction(this)">

我使用 javascript 尝试在 http 请求中将查询作为参数传递:

<script>
        function myFunction(x) {
            num = parseInt(x.cells[0].textContent);
            window.location = '/shownumber?n=num';
        }
</script>

在我的routes 文件中,我按如下方式创建路由:

app.get('/shownumber', db.getSelectedNum)

然后我有一个queries.js 文件,我尝试使用console.log 打印出值(用于测试目的):

const getSelectedNum = (request, response) => {
    console.log(n);
}

当我点击表格行时,虽然我收到以下错误:

ReferenceError: n is not defined

我做错了什么/如何正确将此参数作为查询传递,以便在getSelectedNum 函数中使用它?

【问题讨论】:

    标签: javascript node.js express ejs


    【解决方案1】:

    console.log(n) 会中断,因为您从未定义过“n”,它不存在。为了得到它,您需要使用requestrequest.query 之类的东西。

    【讨论】:

    • 我仍然无法访问该值,request.query 导致:{'n': 'num'}
    • 因为您将它作为字符串发送了 'num'。 /shownumber?n=' + num.
    【解决方案2】:

    如果您使用的是 express,它已经为您完成了。你可以简单地使用req.query

    let n = request.query.n; // GET["n"]
    

    【讨论】:

    • 如果我这样做 console.log(request.query.n) 我会得到以下输出:num) 我不确定为什么这是输出,看起来参数只是作为字符串而不是我的值传递已定义。
    • 那是正确的,因为您将查询参数值传递为'/shownumber?n=num',这不过是num 您需要使用字符串插值来做这样的事情`/shownumber?n=${num}`ref:careerkarma.com/blog/javascript-string-interpolation
    猜你喜欢
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2021-09-21
    相关资源
    最近更新 更多