fix[utils]: param2Obj bug when url params includes ==(#3100)
							parent
							
								
									e001dab7e0
								
							
						
					
					
						commit
						8132ad106e
					
				| 
						 | 
				
			
			@ -162,19 +162,21 @@ export function param(json) {
 | 
			
		|||
 * @returns {Object}
 | 
			
		||||
 */
 | 
			
		||||
export function param2Obj(url) {
 | 
			
		||||
  const search = url.split('?')[1]
 | 
			
		||||
    const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
 | 
			
		||||
    if (!search) {
 | 
			
		||||
        return {}
 | 
			
		||||
    }
 | 
			
		||||
  return JSON.parse(
 | 
			
		||||
    '{"' +
 | 
			
		||||
      decodeURIComponent(search)
 | 
			
		||||
        .replace(/"/g, '\\"')
 | 
			
		||||
        .replace(/&/g, '","')
 | 
			
		||||
        .replace(/=/g, '":"')
 | 
			
		||||
        .replace(/\+/g, ' ') +
 | 
			
		||||
      '"}'
 | 
			
		||||
  )
 | 
			
		||||
    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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
import { param2Obj } from '@/utils/index.js'
 | 
			
		||||
describe('Utils:param2Obj', () => {
 | 
			
		||||
  const url = 'https://github.com/PanJiaChen/vue-element-admin?name=bill&age=29&sex=1&field=dGVzdA==&key=%E6%B5%8B%E8%AF%95'
 | 
			
		||||
 | 
			
		||||
  it('param2Obj test', () => {
 | 
			
		||||
    expect(param2Obj(url)).toEqual({
 | 
			
		||||
      name: 'bill',
 | 
			
		||||
      age: '29',
 | 
			
		||||
      sex: '1',
 | 
			
		||||
      field: window.btoa('test'),
 | 
			
		||||
      key: '测试'
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
		Loading…
	
		Reference in New Issue