最近在做url带参数跳转页面,发现url地址栏会显示请求的参数,用的是ajax中的post方式,但是貌似没有自动进行加密,这里找到一个解决方案,可以对url中的参数进行加密,在从url中获取参数时直接解密即可。具体实现方式如下:
比如我需要请求的url未加密的地址为:
加密后的地址栏为:
实现加密方法:
var c = "house_id="+house_id+"&customer_id="+customer_id+"&house_address="+house_address;
var d = encodeURIComponent(c);
var urlOpen = "addorder.html?"+d;
实现解密的函数如下:
//格式化url中的参数
function parseQueryString(url){
var arr;
var name,value;
var url = decodeURIComponent(url);
var str = url.split("?")[1]; //通过?得到一个数组,取?后面的参数
var items = str.split("&"); //分割成数组
for(var i=0; i<items.length; i++){
arr = items[i].split("="); //["key0", "0"]
var name = arr[0];
var value = arr[1];
this[name] = value;
}
}
获得解密后的参数:
var urlPara = new parseQueryString(window.location.search);
var customer_id = urlPara.customer_id;
知识拓展:
window.location.search: 获得url中?后的字符串
encodeURIComponent: 对字符串进行加密
decodeURIComponent: 对字符串进行解密
split:
定义和用法
split() 方法用于把一个字符串分割成字符串数组。
语法
stringObject.split(separator,howmany)
参数 | 描述 |
---|---|
separator | 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。 |
howmany | 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。 |
<script type="text/javascript"> var str="How are you doing today?" document.write(str.split(" ") + "<br />") document.write(str.split("") + "<br />") document.write(str.split(" ",3)) </script>
输出:
How,are,you,doing,today? H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,? How,are,you