fix[utils]: param2Obj bug when url params includes ==
This commit is contained in:
		@@ -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 = {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										21
									
								
								tests/unit/utils/param2Obj.spec.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								tests/unit/utils/param2Obj.spec.js
									
									
									
									
									
										Normal 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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user