【问题标题】:How to store data as a url parameter using javascript?如何使用javascript将数据存储为url参数?
【发布时间】:2016-04-21 09:39:32
【问题描述】:

我有一个选项卡式导航菜单,并且我为每个选项卡创建了散列 URL。在一个选项卡中,我有多个信息卡和每张卡右上角的复选框。检查此复选框后,卡的背景颜色更改。

我的目标是,当页面刷新或作为链接发送时,已选中的卡片与更改的背景颜色一起保持选中状态。任何帮助将不胜感激。

【问题讨论】:

  • 只生成一个字符串:newURL= URL + "?param1=this&param2=that"
  • 你可以使用localStorage。例如:在每个复选框选择时,将当前选项卡存储在 localStorage 中,例如 ...localStorage.setItem('current-tab', 'tab1')。准备好文档后,您可以使用 localStorage.getItem('current-tab') 获得相同的结果,它将返回 'tab1',然后您可以操作 url
  • @saikumar 但是如果它是作为链接发送的,那就行不通了。
  • 是的,那么第一条评论很有用
  • 我同意第一条评论非常有用。 . .但是叫我白痴,我不知道该怎么做。 :P

标签: javascript url parameters query-string


【解决方案1】:

你可以使用这样的函数:

function dataToQueryString(data){
    var encoded = [];

    for(var key in data){
        // skip prototype properties
        if(!data.hasOwnProperty(key)) continue;

        // encode string properly to use in url
        encoded.push(key + '=' + encodeURIComponent(data[key]));
    }

    return '?' + encoded.join('&');
}

并像这样使用它:

data = {
    id: 1,
    name: "John Doe"
}

url = url + dataToQueryString( data );

或更具体地为您的情况:

function storeCardsInQueryString(cards){
    var encoded = [];

    for(var i = 0; i < cards.length; i++){
        encoded.push('cards[]=' + cards[i]);
    }

    return '?' + encoded.join('&');
}

并像这样使用它:

cards = [ 1, 7, 21, 22, 53 ];

url = url + storeCardsInQueryString( cards );

【讨论】:

【解决方案2】:

我认为你需要使用url参数和localStorage的组合来达到刷新和链接的要求。

假设用户使用此网址打开您的网站:

www.mysite.com/mypgae?tab=tab1&amp;card1=checked&amp;card2=unchecked&amp;card3=checked

您在页面 javascript 中阅读了这些参数,然后转到 tab1 并将 card2 和 card3 标记为选中,card2 标记为未选中

现在假设用户更改了选项卡和一些卡片,您应该将这些更改存储在 localStorage 中,并且下次用户刷新页面时,首先检查 localStorage 如果它是空的,请访问 url。但是,如果 localStorage 不为空,则优先使用 localStorage 并根据 localStorage 而不是 url 应用更改。

这是我想到的同时支持 url 和本地更改的唯一方法。

【讨论】:

  • 这听起来真的很好,我一直在阅读本地存储,但没有很多关于存储为 url 的信息。然后使用两者的混合,我在这里有点超出我的深度。大声笑
猜你喜欢
  • 2020-12-22
  • 2012-07-31
  • 2022-11-30
  • 2021-07-18
  • 2019-04-05
  • 2012-11-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多