隐藏URL参数并阅读它们

时间:2017-06-21 03:57:23

标签: javascript html angularjs url parameters

是否有任何隐藏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;
}

4 个答案:

答案 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,您可以执行某些操作,例如假设您从文本字段发送数据:

&#13;
&#13;
$("#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;
&#13;
&#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)

我为你创建了一个片段,我认为这就是你所要求的。

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

&#13;
&#13;
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;
&#13;
&#13;

看一看,告诉我。

干杯!

答案 3 :(得分:-2)

您可以使用隐藏的输入类型将值从一个页面传输到另一个页面。例如

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