fix[utils]: param2Obj bug when url params includes ==

This commit is contained in:
花裤衩 2020-06-15 17:13:53 +08:00
parent e2fd7c7528
commit 8865514c81
3 changed files with 46 additions and 21 deletions

View File

@ -2,20 +2,22 @@
* @param {string} url * @param {string} url
* @returns {Object} * @returns {Object}
*/ */
function param2Obj(url) { export function param2Obj(url) {
const search = url.split('?')[1] const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
if (!search) { if (!search) {
return {} return {}
} }
return JSON.parse( const obj = {}
'{"' + const searchArr = search.split('&')
decodeURIComponent(search) searchArr.forEach(v => {
.replace(/"/g, '\\"') const index = v.indexOf('=')
.replace(/&/g, '","') if (index !== -1) {
.replace(/=/g, '":"') const name = v.substring(0, index)
.replace(/\+/g, ' ') + const val = v.substring(index + 1, v.length)
'"}' obj[name] = val
) }
})
return obj
} }
module.exports = { module.exports = {

View File

@ -99,17 +99,19 @@ export function formatTime(time, option) {
* @returns {Object} * @returns {Object}
*/ */
export function param2Obj(url) { export function param2Obj(url) {
const search = url.split('?')[1] const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
if (!search) { if (!search) {
return {} return {}
} }
return JSON.parse( const obj = {}
'{"' + const searchArr = search.split('&')
decodeURIComponent(search) searchArr.forEach(v => {
.replace(/"/g, '\\"') const index = v.indexOf('=')
.replace(/&/g, '","') if (index !== -1) {
.replace(/=/g, '":"') const name = v.substring(0, index)
.replace(/\+/g, ' ') + const val = v.substring(index + 1, v.length)
'"}' obj[name] = val
) }
})
return obj
} }

View File

@ -0,0 +1,21 @@
/**
* @param {string} url
* @returns {Object}
*/
export function param2Obj(url) {
const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
if (!search) {
return {}
}
const obj = {}
const searchArr = search.split('&')
searchArr.forEach(v => {
const index = v.indexOf('=')
if (index !== -1) {
const name = v.substring(0, index)
const val = v.substring(index + 1, v.length)
obj[name] = val
}
})
return obj
}