URL参数:换行符%0A导致JSON.parse阻塞

时间:2018-04-18 03:42:31

标签: javascript json regex urlencode

我正在解析来自URL中编码的textarea的多行值:

// URL Params:
?cn=asdf%20asdf&pn=asdf%20asdf&pe=asdf%40example.com&d=asdf%0A%0Aasdf&ye=test%40example.com&c=1234&tc=true

// JAVASCRIPT
var _url = window.location.href;
var _queryParams = decodeURIComponent( _url.split('?')[1] );
var _search = _queryParams;//location.search.substring(1);
var _data = JSON.parse('{"' + decodeURI(_search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}');

但是,只要我在上面的Syntax Error: Unexpected token...网址参数中有多行文字值,我就会从JSON.parse()函数收到d=错误:

&d=asdf%0A%0Aasdf

我需要做什么.replace()正则表达式来处理换行符编码,%0A

编辑: 我已经成功将URL参数转换为javascript对象。问题是内部的replace([pattern match])函数对mutliline文本字符窒息:%0A

1 个答案:

答案 0 :(得分:1)

使用URLSearchParams解析查询字符串,然后使用URLSearchParams的{​​{1}}方法将其转换为普通的Javascript对象,然后对其进行字符串化以将其转换为JSON-格式化字符串:

entries