使用js-cookie,任何带有斜杠的搜索词都会在搜索词中添加“52”

时间:2017-08-15 18:15:18

标签: javascript jquery cookies

我正在使用js-cookie在网站上存储Cookie。我有一个搜索输入字段,将输入存储为变量,然后在保存之前删除任何斜杠。以下代码效果很好:

data.searchTerm = $(el).closest('label').find('input').first().val();
var term = encodeURIComponent(data.searchTerm);
        term = term.replace('%2F','%252F');//allow slash in search field
        this.searchTerm = term;

问题是当我在搜索词中搜索具有斜线的东西时 - 比如'theme / layout' - 当我在控制台中查看term变量时,我会看到搜索词的正确输出正确的斜线替换:

theme%252Flayout

如果你把它放到我的搜索查询中,它就会很好用。但是当我使用以下代码将其存储为cookie时:

Cookies.set("MYSEARCHTERM", this.searchTerm, {expires:5});

cookie结果返回为:

theme%25252Flayout

如果您使用encodeURI和.replace将其与实际搜索字词进行比较,我会得到以下内容:

theme%252Flayout

因此,cookie正在向cookie中的值添加“52”。当我使用在该术语中没有斜杠的普通搜索词进行测试时,它可以正常工作。然而,当我使用带有斜杠的搜索词时,这就是cookie错误地存储值的时候。我正在伸出手来看看是否有人看到我在这里失踪的东西,或者在过去遇到过js-cookie这个问题?

1 个答案:

答案 0 :(得分:0)

检查以确保变量未被双重编码