将查询字符串添加到URL

时间:2013-10-28 13:13:51

标签: javascript node.js express

我正在开发Node / Express / Jade环境中的应用程序。

我们假设我启动了我的应用,并将浏览器指向此网址:

/superadmin/?year=2012

在此页面上,我找到一个包含对象的列表,按默认顺序排序。这里还有一个链接,它将以另一个顺序重新排序列表对象。我这个链接看起来像是:

a(href = '?sortAfter=company&ascending=1') Company

如果我按下此链接,我 将按照我想要的方式对项目进行排序,但早期查询字符串中的?year = 2012将会丢失。

问题:如何重新编写此链接以添加新查询字符串,而不是替换它。

2 个答案:

答案 0 :(得分:0)

遇到同样的问题,这是我修复它的方法:

通过npm install URIjs安装https://npmjs.org/package/URIjs 现在,在您的路线中:

var URI = require('URIjs');
app.get('/', function(req, res) {;
    res.render('views/index.jade', {
        urlHelper: function (key, value) {
           return (new URI(req.url)).setQuery(key, value);
        }
    });
};

在玉中:

a(href=linkHelper('acesnding',1)) Company

答案 1 :(得分:0)

我为这个原因提出了自己的npm包 - > https://www.npmjs.com/package/qsm

示例:

var qsm = require('qsm');

app.get('/', (req, res) => {
    res.render('views/index.jade', {
        addQueryString: (key, value) => {
            return qsm.add(window.location.href, [{ query: key, value }]);
        }
    });
});

和玉器

a(href= addQueryString('acesnding',1)) Company

请参阅qsm中的自述文件,您将看到附加查询字符串,删除特定的查询字符串甚至解析等等是多么容易!

您甚至可以清除,删除和替换查询字符串。最重要的是,它不必是一个URL,它可以是你能想到的任何字符串,但它会表现为该字符串是一个url并为其附加查询字符串:例如:?key=value&key=value取决于已存在的内容。