let url = `http://xxxxxxx?key1=value1&key2=%7B%22id%22%3A%22o8x0oxCIK_Mo9qD48iTmPC0KVFpQ%22,%22have%22%3A%221%22%7D`

这是地址要如何处理?(这些%xx是转义符)
可以百度:

url转义字符表

1.将url恢复成正常url.

url = decodeURIComponent(url); // 可以完全清除掉所有的转义字符
url = decodeURI(url) // 有时候不能完全正常需要用到replaceAll,也可以重复
let url2 = url;
do {url = url2;url2 = URLDecoder.decode(url, "UTF-8");
} while(!url.equals(url2))
  1. 如何判断网址中是否含有转义字符?
let reg = /%(22|7D|7B|3A|...)/g; // ...代表其他转义符
console.log(reg.test(url)); // url 为网址
/*
结果: true, 代表有,则用decodeURIComponent(url);
结果: false, 代表无,则原值返回。
*/
  1. 如何获取当前网址? 跳转页面?
console.log(window.location.href);
location.herf = url; // url:跳转链接
  1. 如何传多个参数在一个key值上面?
// 编码传值   escape 废弃   使用encodeURI()/encodeURIComponent();
let params = {key1:  'value1',key2: 'value2',key3: 'value3',....
}
// 第一种写法 也可以使用`${}`
let escapeUrl = JSON.stringify(params);
let url =  'http:xxx.com/xxx?key=' + encodeURI(escapeUrl));  // encodeURI()/encodeURIComponent();
// 第二种
let escapeParams = encodeURI(JSON.stringify(params)); // encodeURI()/encodeURIComponent();
let url =  'http:xxx.com/xxx?key=' + escapeParams;
// 第三种
let url = 'http:xxx.com/xxx?key=' +encodeURI(JSON.stringify(params)); // encodeURI()/encodeURIComponent();
// 然后采用 1, 2 ,使用JSON.parse()解析解析ok
  1. encodeURL和encodeURLComponent的区别?
    区别:1.encodeURL()不会url的特殊字符进行编码,例如“冒号、正斜杠、问号、井号”;encodeURLComponent()则会对url中任何非标准字符进行编码。
    2.encodeURL()是对整个url;而encodeURLComponent()一般用于给某个特定的字符进行转义。
// encodeURL和encodeURLComponent的区别?
let url = 'http://baidu.com';let encodeURLUrl =  encodeURI(url);
let encodeURLComponentUrl =  encodeURIComponent(url);console.log('encodeURLUrl', encodeURLUrl); // http://baidu.com
console.log('encodeURLComponentUrl', encodeURLComponentUrl); // http%3A%2F%2Fbaidu.comurl = 'https://blog.csdn.net/qq_43432158/article/details/120179967';encodeURLUrl =  encodeURI(url);
encodeURLComponentUrl =  encodeURIComponent(url);console.log('encodeURLUrl', encodeURLUrl); // https://blog.csdn.net/qq_43432158/article/details/120179967
console.log('encodeURLComponentUrl', encodeURLComponentUrl); // https%3A%2F%2Fblog.csdn.net%2Fqq_43432158%2Farticle%2Fdetails%2F120179967

完整代码:

let escapeUrl = `http://xxx.com?key=%7B%22id%22%3A%22wmOiaBDwAAb1F8DJvQ71P7j6dsFSz8lg%22,%22userId%22%3A%22950a75a4007540a191b70af4cd9002ac%22%7D&key2=%7B%22keyOne%22%3A%22o8x0oxEGd-mb9pZyV6bLew5A9ogI%22,%22KeyTwo%22%3A%221%22%7D`
let reg = /%(22|7D|7B|3A|221)/g;
let url;
console.log(reg.test(escapeUrl))
if (reg.test(escapeUrl)) {url = decodeURIComponent(escapeUrl); // encodeURI()/encodeURIComponent();
} else {url = escapeUrl;
}
console.log(url)
/*
let params = url.substring(url.indexOf('?') + 1, url.length);
let param = params.split('&');
let key1 = JSON.parse(param[0].substring(param[0].indexOf('=') + 1, param[0].length))
let key2 = JSON.parse(param[1].substring(param[1].indexOf('=') + 1, param[1].length))
*/let param = _dealKey(url, '?').split('&');
let key1 = _dealKey(param[0], '=', true)
let key2 =  _dealKey(param[1], '=', true)
function _dealKey (str, symbol, isObj) {if (isObj) {return JSON.parse(str.substring(str.indexOf(symbol) + 1, str.length))} else {return str.substring(str.indexOf('?') + 1, str.length);}
}
console.log(key1);
let id = key1.id;
let userId = key1.userId;
console.log(key2);
let keyOne = key2.keyOne;
let keyTwo = key2.keyOne;

知识点:(一一对应)

转义方法:
escape(); // 对字符串进行编码 废弃
encodeURI(); // 把字符串作为 URI 进行编码
encodeURIComponent(); // 把字符串作为 URI 组件进行编码
解码方法:
unescape(); // 对通过 escape() 编码的字符串进行解码 废弃
decodeURI(); // 对 encodeURI() 函数编码过的 URI 进行解码
decodeURIComponent(); //对 encodeURIComponent() 函数编码的 URI 进行解码

url中出现“%22”等如何处理?如何判断url中是否有“%22等”?如何获取当前网址?传入多个参数在url上? encodeURL和(js)相关推荐

  1. 有一个数列:白眉鹰王、金毛狮王、紫衫龙王、青翼蝠王 猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值

    有一个数列:白眉鹰王.金毛狮王.紫衫龙王.青翼蝠王 猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称[顺序查找] 要求: 如果找到了,就提示找到,并给出下标值 如果有多个查找结果,都找出来 ...

  2. vue判断列表中包含某一项_判断字符串中是否包含某个字符串

    String对象的方法 1. indexOf() indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. 如果要检索的 字符串值没有出现,则该方法返回 -1. var str='你 ...

  3. 判断数组中是否包含某个元素,判断对象中是否包含某个属性,判断字符串中是否包含某个字符串片段

    1-判断对象中是否包含某个元素 方法一: 使用in var str = {name:"mayouchen",name:"js", age:100 }alert( ...

  4. java数组求和递归,js数组去重 数组拼接 替换数组中的指定值 递归数组 判断数组中是否存在指定值 数组求和 根据条件判数组值...

    // 数组去重 var arr1 = [1,1,2,3,4,5,6,3,2,4,5,'a','b','c','a',6,7,8,3,5,7,8,34] // console.log(Array.fro ...

  5. 猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数。

    public static void main(String[] args) {         //键盘录入         Scanner sc = new Scanner(System.in); ...

  6. java 判断是否包含中文_java判断字符串中是否包含中文并过滤中文

    java判断字符串中是否包含中文并过滤掉中文,具体内容如下 1.判断字符串中是否包含中文方法封装 /** * 判断字符串中是否包含中文 * @param str * 待校验字符串 * @return ...

  7. linux 删除root权限,使用root权限删除不了linux中的文件该如何处理?

    使用root权限删除不了linux中的文件该如何处理? 在Linux系统中,root用户拥有最高权限,可以干任何事情,删除任何不需要的软件或者文件,可以说无所不能.但有时候root用户却不能删除一个小 ...

  8. 判断数组中某个元素除自身外是否和其他数据不同_布隆过滤器,我也是个处理过 10 亿数据的人...

    ❝ 文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱 什么是 BloomFilter 布隆过滤器(英语:Bloom Filter)是 1970 年由布隆提出的.它实际上是 ...

  9. java后台传一个对象到前台_前台判断对象中的一个布尔值_springMVC面试题

    1:springMVC工作原理 springMVC架构.png [用户发送请求到前端控制器dispatcherservlet,前端控制器接收到请求之后调用处理器映射器,根据请求url找到具体的处理器, ...

最新文章

  1. 最短路径的求解方法(Dijkstra、Floyd算法)
  2. python转成exe_将python程序转换成exe程序
  3. ECCV 2020 Spotlight | 多标签长尾识别前沿进展
  4. mysql 12142_php连接mysql的类mysql.class.php
  5. 小程序动画从头开始_渐进式Web应用程序102:从头开始构建渐进式Web应用程序
  6. 唤起那些年你对IDL的记忆(二)
  7. 软工网络15团队作业8——Beta阶段项目总结
  8. U盘加密软件测试自学,利用联想USB接口加密软件给你的U盘加密、设定访问权限...
  9. Unity Shader案例之——阴阳师画符效果
  10. 大数据分析平台和工具,主要有哪些?
  11. uni-app+微信小程序+云开发 爬取必应首页每日图片
  12. 万年历程序例题(农历阴历转换)
  13. 【考研英语】考研英语小作文万能模板(致歉信)
  14. Excel添加按键运行宏
  15. 解决iphone在微信内置浏览器中看不到video标签
  16. onlyoffice5.4.2离线包的制作—解决中文字体问题
  17. Navicat使用教程及安装教程
  18. word的表格解决左对齐但不在左边,对齐不正常
  19. html 游戏 调用震动,html5消息和震动api
  20. 全球与中国贵金属电子废料回收市场动态调研与未来需求趋势预测报告2021年版

热门文章

  1. 微信发朋友圈的测试用例
  2. js如何获取当天日期的前几天
  3. 计算机学院运动会解说词,学校运动会解说词30篇
  4. Sketch 插件开发指南
  5. (4)Dojo学习之动画学习
  6. 【算法】滴滴-2021校招在线笔试0913 X星文
  7. Word怎么在方框里打勾就是一个方框打上一个对号
  8. 2021-09:Java的框架甲骨文面试题(自己总结的)
  9. 【附资料】PMP证书有用吗?
  10. 树莓派小车————全部代码