有没有办法将参数从一个页面发送到另一个页面而不在 url 中发送它们?
Posted
技术标签:
【中文标题】有没有办法将参数从一个页面发送到另一个页面而不在 url 中发送它们?【英文标题】:Is there any way to send parameters from one page to another page without sending them in url? 【发布时间】:2017-11-03 17:09:52 【问题描述】:有没有什么方法可以将参数从一个页面发送到另一个页面而不将它们绑定在 URL 中。在大多数情况下,我们会在 URL 中发送值,以便在下一页检索这些值。就像在 AngularJs 中一样:
<li ng-repeat="cat in x.Child"><a ng-href="#/ProductListingByCategory/cat.Id">cat.Name</a></li>
在 javascript 或 Jquery 中我们这样做。
<li><a href='Product/ProductList/" + this.Id + "'>" + this.Name + </a> </li>
是否有任何替代解决方案我们不应该在 URL 中发送参数?在此先感谢:)
【问题讨论】:
您可以在本地存储中设置参数并在另一个页面中获取它们。 我注意到您的标签之一是 asp.net-mvc。为什么不把它们放在 viewbag 中呢? 你可以选择本地存储,或者常量 @Bryan dellinger 如果我使用 api 获取数据并在页面上显示 api 数据会怎样。 @SaqibMajeed - 安全性不只是 掩盖价值。通过 URL 传递数据并没有什么固有的错误,只要您在服务器端授权停止 url 黑客攻击。通常这些值是通过 POST 正文发送的,但这只会使其更难破解 - 在任何一种情况下,您都必须验证页面之间传递的所有数据。 【参考方案1】:如果您使用ui-router
,则可以使用状态的 params 属性来执行此操作。
$stateProvider.state('state.name',
url: "/state-url",
params:
myParam: null
);
当您转换到状态时,您可以为myParam
分配您想要的任何值,然后您就可以通过$stateParams
访问它。
在视图中的使用
<a ui-sref="state.name( myParam: 'Value of the param' )">Link Text</a>
在控制器中的使用
$state.go('state.name',
myParam: 'Value of the param'
);
请注意,在页面重新加载后,这些参数将为空,因为它们仅存储在内存中。
【讨论】:
【参考方案2】:可以通过几种方式完成,而 localStorage 是一种常见的方式。
示例:在控制器 A 中,您可以使用 localStorage 将变量的值设置为名称
$scope.age = 50;
localStorage.setItem('age', $scope.age);
在控制器 B 或外部任何地方,您都可以使用 getItem 获取它。
var age = localStorage.getItem('age');
【讨论】:
以上是关于有没有办法将参数从一个页面发送到另一个页面而不在 url 中发送它们?的主要内容,如果未能解决你的问题,请参考以下文章
jQuery Mobile:将数据从一个页面发送到另一个页面