我正在从 URL 中编码的文本区域解析多行值:
// 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,'":"') + '"}');
但是,每当我在 d=
上面的 URL 参数:
&d=asdf%0A%0Aasdf
我需要执行什么 .replace()
正则表达式模式来处理换行符编码 %0A
?
编辑:
我已经成功地将 URL 参数转换为 javascript 对象。问题是 replace([pattern match])
函数在多行文本字符上窒息:%0A
。
最佳答案
使用URLSearchParams
解析查询字符串,然后使用URLSearchParams
的entries
方法把它变成一个普通的Javascript对象,然后将其字符串化以将其转换为 JSON 格式的字符串:
const queryString = '?cn=asdf%20asdf&pn=asdf%20asdf&pe=asdf%40example.com&d=asdf%0A%0Aasdf&ye=test%40example.com&c=1234&tc=true';
const params = new URLSearchParams(queryString);
console.log(params.get('d'));
const queryObj = {};
for (const [key, val] of params.entries()) {
queryObj[key] = val;
}
console.log(JSON.stringify(queryObj));
关于javascript - URL 参数 : Line break %0A causing JSON. 解析为阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49890805/