Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 隐藏URL参数并读取它们_Javascript_Html_Angularjs_Url_Parameters - Fatal编程技术网

Javascript 隐藏URL参数并读取它们

Javascript 隐藏URL参数并读取它们,javascript,html,angularjs,url,parameters,Javascript,Html,Angularjs,Url,Parameters,有没有方法隐藏URL参数,然后用代码读取隐藏的参数?例如,我的页面中有以下内容: “example.com/transaction.html?价格=10” 我曾尝试使用Base64进行编码,但它没有按预期工作(编码有效,解码无效),因此我想隐藏price=10或transaction.html?price=10 我听说AngularJS可以隐藏参数,但它能读取“隐藏”参数吗?或者它是如何工作的 提前谢谢 function getUrlVar() { var result = {};

有没有方法隐藏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;
}

可以使用“输入类型隐藏”将值从一个页面传递到另一个页面。比如说

 <input type="hidden" name="price" value="10">

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的方式,可能不是你需要的。 我发现这个链接很有用:

如果您不想在地址栏中向用户显示查询参数,您可以使用Javascript或jquery轻松实现,也需要为此切换到angular

你所能做的不是使用
获取该查询的数据,而是将用户重定向到链接,比如说
www.something.com?price=10
,你所能做的是使用一个按钮作为

获取数据

在Javascript文件中,您可以通过这种方式发出
GET或POST
请求,您想要隐藏的这些参数不会显示,只是这些参数会在后台发送到服务器,而不会更改您的地址

要发出此
GET请求
,您可以执行类似于假设您从文本字段发送数据的操作:

$(“#按钮”)。单击(函数(){
$.ajax({
类型:“POST”,
网址:“www.something.com/”,
数据:{
价格:$(“价格”)
},
成功:功能(数据){
//对收到的数据进行处理}
});
})


发送
我已经为您创建了一个代码片段,我想这正是您想要的

我做得很快,所以需要很多改进,但至少你有了一些开始:

let paramsRaw=“price=10”;
让urlEncoded=“example.com/transaction.html?”+btoa(paramsRaw);
函数getUrlVar(){
var location=urlEncoded;//window.location.href.split('#');
var paramsEncoded=urlEncoded.split(“?”)[1];
var paramsDecoded=atob(paramsEncoded);
var paramsDecodedValue=paramsDecoded.split('=')[1];
返回parseInt(paramsDecodedValue);
}
让price=getUrlVar();
document.getElementById('result').innerHTML=price*50

您是在尝试读取服务器或客户端上的参数吗?从客户端我相信您应该提供JSFIDLE或类似的东西,以便我们可以帮助您。或者您可以对
price=10
进行散列,使其对用户没有意义,但您的服务器将能够对其进行反散列并理解(或者您的客户端js也将进行散列/反散列)?通过隐藏url参数,您的意思是您的网站地址应该仍然看起来像
www.something.com
,但数据仍然被加载,或者当您获取数据时,地址应该被编码成没有人能够理解的格式?请通过
如何从控制器获取参数来改进您的答案?
顺便说一句,我考虑了当我将链接更改为新页面时,“state”作为页面。因此,您可以使用$state.go('newState',{id:yourId})。在路由文件中,$stateProvider.state('newState',{url:'/new“,
templateUrl:'tpl.html',参数:{id:null,},controller:newStateController})在newStateController中,注入$state,您就可以通过$state获取id。params.idGet item by id比在
状态下设置params更具逻辑性,因为它更具动态性在这个问题上,我认为使用POST方法与params而不是get,因为一般来说,get请求不安全我以前从未使用过AngularJS因此,我不确定它的用途和使用方法,但我会查找您的链接这将从url中隐藏参数,但不会从网络中隐藏参数,是吗?如果监视网络,他/她将看到get/post调用,否?是的,正确,如果有人正在阅读“网络”选项卡,则除了在发送之前对其进行加密之外,没有其他方法隐藏参数给他们打电话。