我们如何添加url参数? (EJS + Node + Express)

时间:2015-05-28 20:28:20

标签: node.js express ejs

我理解我们如何解析快递路线中的url参数,如示例

How to get GET (query string) variables in Express.js on Node.js?

但是url参数首先来自哪里?

编辑:

显然,我可以使用jquery(即$.get)构建这样的查询。我可以将params附加到此查询对象。这很酷,但我仍然试图理解我们如何在将页面呈现为整体的查询中实现这一点。

示例:当我选择下面的最旧标签时,SO如何将?answertab=oldest添加到网址,使其变为:

https://stackoverflow.com/questions/30516497/how-do-we-add-url-parameters-ejs-node-express?answertab=oldest#tab-top

2 个答案:

答案 0 :(得分:3)

您正在查看的字符串是表单值的序列化,或其他一些输入数据的方法。要了解这一点,请查看jQuery's built in .serialize() method

您也可以手动构建该字符串,这也很简单。格式只是Spring version : 4.1.6.RELEASE Spring security verison : 4.0.1.RELEASE 等。如果您有一个JSON对象?var1=data1&var2=data2,那么您可以编写一个非常简单的函数来序列化该对象:

{"name": "Tim", "age": 22}

正在运行function serializeObject(obj) { var str = "?"; for(var i = 0; i < Object.keys(obj).length; i++) { key = Object.keys(obj)[i]; if (i === Object.keys(obj).length - 1) str += encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]); else str += encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]) + "&"; } return str; } 将输出seralizeObject({"name": "Tim", "age": 22})。这可以用于生成链接或诸如此类的东西。

答案 1 :(得分:1)

页面作者将其写入。这就是他们“首先来到这里”的方式。 HTML页面的作者决定(或由网站设计者告知)当用户点击其上的特定锚元素时将用户带到哪里。 如果他们希望用户GET一个带有一些查询参数的页面(他们的服务器处理),他们只需将他们选择的查询字符串添加到链接的href属性。

查看您点击的最旧标签的href属性:

<a
 class="youarehere"
 href="/questions/30516497/how-do-we-add-url-parameters-ejs-node-express?answertab=oldest#tab-top"
 title="Answers in the order they were provided"
>
 oldest
</a>

当您点击它时,浏览器只会将您带到相对于基本网址href的{​​{1}}属性/questions/30516497/how-do-we-add-url-parameters-ejs-node-express?answertab=oldest#tab-top中指示的路径。所以地址栏改变了。

stackoverflow.com可能有自己的生成动态HTML页面的系统。他们的管理员和页面作者已经配置了他们的服务器来处理特定的查询参数,并已经建立了自己的方法来确保他们页面上的链接指向他们希望的URL(包括查询字符串)。

您需要向您的模板系统提供您所选择的查询字符串的URI(您可以使用url.formatquerystring.stringify构建它们)进行渲染。然后让你的快速路线处理它们并根据它们的价值生成页面。