Tengo un sitio que está hecho por un CMS . Cuando el sitio se visita normalmente y un usuario busca en el sitio con la URL:
El código JS :
let test = requester.getParameter("identity") console.log(test) // programSV,coursesSV,lifeLongLearningCoursesSVdevuelve programSV,coursesSV,lifeLongLearningCoursesSV como se esperaba.
Pero cuando visito el sitio en exactamente la misma URL pero vengo de una página externa, el código JS anterior devuelve esto: programSV%2CcoursesSV%2ClifeLongLearningCoursesSV
¿Alguna sugerencia sobre lo que podría estar mal y cómo podría solucionarse?
Use parámetros de búsqueda de URL para mantener la coherencia: decodificará la URL por usted independientemente de las entidades codificadas
Alternativamente use decodeURIComponent
const url1 = new URL(`https://test.se/test.html?language=sv&SubjectArea=Ekonomi&identity=programSV,coursesSV,lifeLongLearningCoursesSV&showbutton=false`) const url2 = new URL(`https://test.se/test.html?language=sv&SubjectArea=Ekonomi&identity=programSV%2CcoursesSV%2ClifeLongLearningCoursesSV&showbutton=false`) console.log(url1.searchParams.get("identity")) console.log(url2.searchParams.get("identity")) // alternative console.log(decodeURIComponent(`programSV%2CcoursesSV%2ClifeLongLearningCoursesSV`))NOTA: decodeURI no hace nada por sus comas:
decodeURI(requester.getParameter("identity")) devoluciones programSV%2CcoursesSV%2ClifeLongLearningCoursesSV
sin embargo, decodeURIComponent funciona:
decodeURIComponent(requester.getParameter("identity")) devoluciones programSV,coursesSV,lifeLongLearningCoursesSV
las comas se están codificando, debe usar decodeURIComponent. Así: decodeURIComponent(requester.getParameter("identity")). Consulte el enlace de referencia: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent