2012-11-22 61 views
5

我需要使用客户端技术将潜在的大量数据从一个页面传递到另一个页面。它基本上是一个id列表,它将显示在目标页面上。显然,查询字符串不适合,因为可能有成千上万的ID,所以我想我可以使用JavaScript动态添加一个表单(method = GET),将ID写入隐藏字段并将表单提交到目标页面。它似乎工作正常,但我想知道是否有更好的方式做到这一点 - 这感觉有点哈克。将数据从一个网页传递到另一个网页

+2

你意识到一个带有方法GET的表单的发布将只是发送一个查询字符串的数据吗? – slebetman

+0

是否有任何问题发送日期,如'index.php?id1 = v1&id2 = v3&id3 = v3' ...?如果不是那么我知道一个技巧... – NazKazi

+0

@slebetman - 我没有意识到这一点。这是否意味着我应该按照Simon的建议使用post或jquery.post()? – HammerIp

回答

1

ID的使用并不多。如果ID是GUID,则会有Nx32个字节。你可以使用jQuery post,它会触发一个HTTP Post。

+0

刚刚经过测试,数据传递给页面等,但它不会在浏览器中加载目标页面。我需要目标页面加载并显示一些基于我传入的ID的数据。使用http get可以很好地工作,但我试图避免包含数千个ID的大量查询字符串。有没有办法做到这一点? – HammerIp

+0

使用常规POST,跳过jQuery AJAX –

7

通过使用html5 storage api你可以做到这一点...

随着HTML5,网页可以在用户的​​浏览器内的本地存储数据。

此前,这是通过cookie完成的。但是,Web存储更安全,速度更快。这些数据不包含在每个服务器请求中,但仅在需要时才使用。还可以存储大量数据,而不会影响网站的性能。

数据存储在键/值对中,网页只能访问自己存储的数据。

  • localStorage的 - 存储与没有到期日期
  • 的sessionStorage数据 - 存储数据为一个会话

实施例:

要设置

window.localStorage.setItem("name",document.getElementById("name").value); 

要获得

var name = window.localStorage.getItem("name"); 

有关详细信息参见HTML5 storage

注:网页存储在Internet Explorer 8+, Firefox, Opera, Chrome, and Safari支持。

+0

对不起,我应该指定这是企业环境,浏览器是IE7。不管怎么说,还是要谢谢你。 – HammerIp

+0

@HammerIp嗯,它好的 – Talha

+0

@Talha,如果'sessionStorage'足够了(可以在同一浏览器窗口中查看的页面之间传递数据),那么可以考虑使用polyfill http://code.google.com/p/sessionstorage /这似乎使它在IE 7上工作。 –

相关问题