2012-05-24 34 views
1

我目前难住这一点。我窥探了一下,并没有找到任何具体的答案只使用JS来做到这一点,所以我的问题是这样的。如果我正在导航多个页面并希望在附加到url之前保留查询字符串,那么执行此操作的最简单方法是什么?追加查询字符串从多个页面

+1

您可以使用cookies.Refer http://stackoverflow.com/questions/1253821/persist-javascript-variables-between-get-requests –

+0

我正在考虑它,但如果有人清除他们的缓存它将失去所有他们的数据到目前为止。 –

+0

@CharlesLillo:这就是清除缓存的目的所在......查询字符串不是用于数据传输的,你想要实现什么功能? – Bergi

回答

0

如果用户“浏览”的方式是使用页面内的链接,则可以这样做。

  1. 在一个给定的html页面,使用Javascript在网页中运行可以通过window.search属性看到网址的查询参数。 Mozilla docs.

  2. 然后使用JS修改页面的所有锚元素的href链接,以将已有的查询参数添加到链接。

结果:单击页面中的链接将导致新页面同时具有现有和新的查询参数。

+0

这就是我最初的想法。如果没有简单的方法,我可能会最终这样做。我有一种感觉,这是唯一的方法。 –

+1

您唯一的选择是在服务器上使用这个,cookies或维护状态。请注意,用户可以(也可以)编辑这些网址。此外,URL /查询参数长度也有限制。 –

0

我不认为有一个简单的方法。每次编写URL或创建表单时,您都必须考虑当前的查询参数。

+0

我能想到的唯一方法就是编写一个脚本来抓取下一个查询字符串并将其附加到最后一个字符串中,并持续这样做。 –

+0

@CharlesLillo请你详细说明一下吗? –

+0

从某种意义上讲@LarryK说的,但我试图避免这种情况。 –

0

你问这个吗?

var url1 = "...", url2 = "..."; 

var query1 = url1.split("#")[0].split("?").slice(1).join("?"); 
if (!query1) 
    return url2; 
var parts2 = url2.split("#"); 
parts2[0] += (parts2[0].indexOf("?")>-1 ? "&" : "?") + query1; 
return parts2.join("#"); 

这从url1提取查询字符串,并将其追加的url2查询字符串,返回新url2

相关问题