是否有任何隐藏URL参数的方法,然后用代码读取隐藏的参数?例如,我在我的页面中有这个: " example.com/transaction.html价= 10"?
我尝试使用Base64编码,但它没有按预期工作(编码工作,解码不工作),所以我想要隐藏price = 10或transaction.html?price = 10。
我听说AngularJS可以隐藏参数,但是它可以读取"隐藏"参数或它是如何工作的?
提前致谢!
function getUrlVar() {
var result = {};
var location = window.location.href.split('#');
var parts = location[0].replace(/[?&]+([^=&]+)=([^&]*)/gi,function(m,key,value) {
result [key] = value;
});
return result;
}
答案 0 :(得分:1)
如果您不想在地址栏中向用户显示查询参数,您可以使用Javascript轻松实现它,或者jquery也需要切换到角度。
您可以执行的操作不是使用<a href = ....> </a>
来获取该查询的数据,而是将用户重定向到链接说www.something.com?price=10
,而不是这样做,您可以使用按钮作为< / p>
<button type="button" onclick="fetch()">Fetch Data</button>
并且在您的Javascript文件中,您可以通过这种方式发出GET or POST
请求,这些您要隐藏的参数将无法显示,只是这些将在后台发送到服务器不改变你的地址。
要制作此GET Request
,您可以执行某些操作,例如假设您从文本字段发送数据:
$("#button").click(function() {
$.ajax({
type: "POST",
url: "www.something.com/",
data: {
price: $("#price")
},
success: function(data) {
// do something with the data you received}
});
})
&#13;
<input type=text id="price" />
<button id="button">Send</button>
&#13;
现在您在后台获取了数据,但没有在地址栏中向用户显示参数。
答案 1 :(得分:0)
AngularJS使用$ urlRouterProvider传递params, AngularJS $urlRouterProvider
您的参数包含如下:
$stateProvider.state('toState', {
url: /your-url
templateUrl:'wokka.html',
controller:'stateController',
params: {
'referer': 'some default',
'param2': 'some default',
'etc': 'some default'
}
});
并且您的参数未包含在链接中,您可以使用控制器中的参数运行$ state.go函数。
但是我也认为AngularJS使用Ajax机制实际上,它并不意味着页面被重新加载,只是url和js,html被加载
这只是angularJs的方式,可能不是你的需要。 我发现这个链接很有用: Code-project how to hide parameters in url
答案 2 :(得分:0)
我为你创建了一个片段,我认为这就是你所要求的。
我做得很快,所以它需要很多改进,但至少你有一些东西可以开始:
let paramsRaw = "price=10";
let urlEncoded = "example.com/transaction.html?" + btoa(paramsRaw);
function getUrlVar() {
var location = urlEncoded; //window.location.href.split('#');
var paramsEncoded = urlEncoded.split('?')[1];
var paramsDecoded = atob(paramsEncoded);
var paramsDecodedValue = paramsDecoded.split('=')[1];
return parseInt(paramsDecodedValue);
}
let price = getUrlVar();
document.getElementById('result').innerHTML = price * 50;
&#13;
<span id="result"></span>
&#13;
看一看,告诉我。
干杯!
答案 3 :(得分:-2)
您可以使用隐藏的输入类型将值从一个页面传输到另一个页面。例如
<input type="hidden" name="price" value="10">