在GET请求之间保留javascript变量?

时间:2009-08-10 08:59:36

标签: javascript cookies request

允许使用ASP .NET 允许在隐藏的输入字段中存储值 不允许使用查询字符串 不允许POST请求

可以在GET请求之间存储JS变量吗? 我想使用ClientScript.RegisterStartupScript在客户端上重新初始化它们

我可以使用cookies吗? 还有其他可能吗?
在提出请求时存储cookie?

4 个答案:

答案 0 :(得分:3)

  

我可以使用cookies吗?

是的,请参阅此tutorial on using cookies in Javascript

  

还有其他可能吗?

如果您不允许附加任何要求的网址,我就无法提出任何要求。

  

在提出请求时存储cookie?

在HTTP请求标头中。上述教程将告诉您如何从Javascript中读取它们的值。在ASP.Net的服务器端,您可以使用Request.Cookie["cookieName"]读取cookie值,该{{1}}返回HttpCookie的实例。

答案 1 :(得分:3)

我不会高度推荐这个,但另一个选择是改变 window.name 属性。

可以在这里保存一些小数据,然后在下一页加载时检索它们。

<强>优点:

  • 快点肮脏,但有效

<强>缺点:

  • 汇总弹出窗口/子iframe的任何窗口引用
  • 由于它是“黑客”,浏览器供应商可能在未来打破这个“功能”

当然,如果您可以排除所有旧浏览器,请使用Global/Client Session Storage

答案 2 :(得分:0)

目前使用cookies是最好的选择。您可以将JavaScript对象序列化为字符串,稍后将它们反序列化为对象。一个很好的选择格式是JSON,因为它是JavaScript的一个子集。

Flash中也存储对象。 存储在Google Gears中。 DomStorage

请参阅此库,其中包含每个库的接口: http://pablotron.org/?cid=1557

如果您可以控制页面的所有方面,那么您也可以将页面包装在顶层框架中。然后只刷新子框架。然后,您可以将内容存储在父框架中。

您可以在GMail等网站中看到这种情况,其他网站中唯一更改的内容是#。

您甚至不必更改URL,该部分仅用于人性化URL。 (因此,您可以按原样复制和粘贴URL)。

答案 3 :(得分:0)

如果您要存储的对象很大,或者您想要精确地恢复它们(JSON肯定没有),那么请使用http://rhaboo.org。大多数库将大型对象和数组序列化为单个localStorage条目,但这意味着在每次微小变化时都会对整个事物进行解码和重新编码,这意味着忠诚用户的性能会逐渐恶化。 Rhaboo为对象中的每个终端值使用单独的LS条目,然后单独调整或附加它们,这样就不会影响性能。

BTW,我写了rhaboo。