Mitään en nettiohjelmoinnistakaan ymmärrä, mutta yhtä koodia hyödyntänyt ja nyt tuottaa "erikoismerkit" vaivaa.
Annan tietoja sivulle perinteiseen tapaan näin:
HTTP://www.omasivu.fi/kansio/sivu.html?data=123456&muuta=098765
Luen ne tällä javascriptillä muuttujiin:
function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; }); return vars; }
Homma toimii hyvin, mutta välilyönti tulostuu %20 ja tietty muutkin erikismerkit kuten ääkköset jne. noilla %-jutuilla.
Onko mitään tehtävissä?
En testannut, mutta kokeile:
function getUrlVars() { var vars = {}; var url = encodeURIComponent(window.location.href); var str = decodeURIComponent(url); var parts = str.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; }); return vars; }
EDIT: Fiksailin, pitäisi toimia.
Ei vaikuttanut mitään?!?!
Voiko syy olla muussa koodissa joka käyttää tuota palautetta vars ?
var teksti = "Terve%20maailma!" var muunnettu = decodeURIComponent(teksti) alert(muunnettu) //Terve maailma!
groovyb kirjoitti:
var teksti = "Terve%20maailma!" var muunnettu = decodeURIComponent(teksti) alert(muunnettu) //Terve maailma!
Esimerkkisi toimii ok.
Eli näin toimii decodeURIComponent(getUrlVars()["otsikko"])
Syöte annettava muodossa HTTP://......?data=xyz.csv&otsikko=kkkk%20kkk
Kiitos!
Oikea ratkaisu on dekoodata sekä avaimet että arvot jo funktion sisällä:
vars[decodeURIComponent(key)] = decodeURIComponent(value)
Aihe on jo aika vanha, joten et voi enää vastata siihen.